modernc.org/knuth@v0.0.4/tangle/testdata/tex.p (about)

     1  {4:}{9:}{$C-,A+,D-}{[$C+,D+]}{:9}PROGRAM TEX;LABEL{6:}1;
     2  {:6}CONST{11:}MEMMAX=30000;MEMMIN=0;BUFSIZE=500;ERRORLINE=72;
     3  HALFERRORLINE=42;MAXPRINTLINE=79;STACKSIZE=200;MAXINOPEN=6;FONTMAX=75;
     4  FONTMEMSIZE=20000;PARAMSIZE=60;NESTSIZE=40;MAXSTRINGS=3000;
     5  STRINGVACANCIES=8000;POOLSIZE=32000;SAVESIZE=600;TRIESIZE=8000;
     6  TRIEOPSIZE=500;DVIBUFSIZE=800;FILENAMESIZE=40;
     7  POOLNAME='TeXformats:TEX.POOL                     ';
     8  {:11}TYPE{18:}ASCIICODE=0..255;{:18}{25:}EIGHTBITS=0..255;
     9  ALPHAFILE=PACKED FILE OF CHAR;BYTEFILE=PACKED FILE OF EIGHTBITS;
    10  {:25}{38:}POOLPOINTER=0..POOLSIZE;STRNUMBER=0..MAXSTRINGS;
    11  PACKEDASCIICODE=0..255;{:38}{101:}SCALED=INTEGER;
    12  NONNEGATIVEINTEGER=0..2147483647;SMALLNUMBER=0..63;
    13  {:101}{109:}GLUERATIO=REAL;{:109}{113:}QUARTERWORD=0..255;
    14  HALFWORD=0..65535;TWOCHOICES=1..2;FOURCHOICES=1..4;
    15  TWOHALVES=PACKED RECORD RH:HALFWORD;CASE TWOCHOICES OF 1:(LH:HALFWORD);
    16  2:(B0:QUARTERWORD;B1:QUARTERWORD);END;
    17  FOURQUARTERS=PACKED RECORD B0:QUARTERWORD;B1:QUARTERWORD;B2:QUARTERWORD;
    18  B3:QUARTERWORD;END;
    19  MEMORYWORD=RECORD CASE FOURCHOICES OF 1:(INT:INTEGER);2:(GR:GLUERATIO);
    20  3:(HH:TWOHALVES);4:(QQQQ:FOURQUARTERS);END;WORDFILE=FILE OF MEMORYWORD;
    21  {:113}{150:}GLUEORD=0..3;
    22  {:150}{212:}LISTSTATERECORD=RECORD MODEFIELD:-203..203;
    23  HEADFIELD,TAILFIELD:HALFWORD;PGFIELD,MLFIELD:INTEGER;
    24  AUXFIELD:MEMORYWORD;END;{:212}{269:}GROUPCODE=0..16;
    25  {:269}{300:}INSTATERECORD=RECORD STATEFIELD,INDEXFIELD:QUARTERWORD;
    26  STARTFIELD,LOCFIELD,LIMITFIELD,NAMEFIELD:HALFWORD;END;
    27  {:300}{548:}INTERNALFONTNUMBER=0..FONTMAX;FONTINDEX=0..FONTMEMSIZE;
    28  {:548}{594:}DVIINDEX=0..DVIBUFSIZE;{:594}{920:}TRIEPOINTER=0..TRIESIZE;
    29  {:920}{925:}HYPHPOINTER=0..307;{:925}VAR{13:}BAD:INTEGER;
    30  {:13}{20:}XORD:ARRAY[CHAR]OF ASCIICODE;XCHR:ARRAY[ASCIICODE]OF CHAR;
    31  {:20}{26:}NAMEOFFILE:PACKED ARRAY[1..FILENAMESIZE]OF CHAR;
    32  NAMELENGTH:0..FILENAMESIZE;
    33  {:26}{30:}BUFFER:ARRAY[0..BUFSIZE]OF ASCIICODE;FIRST:0..BUFSIZE;
    34  LAST:0..BUFSIZE;MAXBUFSTACK:0..BUFSIZE;{:30}{32:}TERMIN:ALPHAFILE;
    35  TERMOUT:ALPHAFILE;
    36  {:32}{39:}STRPOOL:PACKED ARRAY[POOLPOINTER]OF PACKEDASCIICODE;
    37  STRSTART:ARRAY[STRNUMBER]OF POOLPOINTER;POOLPTR:POOLPOINTER;
    38  STRPTR:STRNUMBER;INITPOOLPTR:POOLPOINTER;INITSTRPTR:STRNUMBER;
    39  {:39}{50:}POOLFILE:ALPHAFILE;{:50}{54:}LOGFILE:ALPHAFILE;SELECTOR:0..21;
    40  DIG:ARRAY[0..22]OF 0..15;TALLY:INTEGER;TERMOFFSET:0..MAXPRINTLINE;
    41  FILEOFFSET:0..MAXPRINTLINE;TRICKBUF:ARRAY[0..ERRORLINE]OF ASCIICODE;
    42  TRICKCOUNT:INTEGER;FIRSTCOUNT:INTEGER;{:54}{73:}INTERACTION:0..3;
    43  {:73}{76:}DELETIONSALLOWED:BOOLEAN;SETBOXALLOWED:BOOLEAN;HISTORY:0..3;
    44  ERRORCOUNT:-1..100;{:76}{79:}HELPLINE:ARRAY[0..5]OF STRNUMBER;
    45  HELPPTR:0..6;USEERRHELP:BOOLEAN;{:79}{96:}INTERRUPT:INTEGER;
    46  OKTOINTERRUPT:BOOLEAN;{:96}{104:}ARITHERROR:BOOLEAN;REMAINDER:SCALED;
    47  {:104}{115:}TEMPPTR:HALFWORD;
    48  {:115}{116:}MEM:ARRAY[MEMMIN..MEMMAX]OF MEMORYWORD;LOMEMMAX:HALFWORD;
    49  HIMEMMIN:HALFWORD;{:116}{117:}VARUSED,DYNUSED:INTEGER;
    50  {:117}{118:}AVAIL:HALFWORD;MEMEND:HALFWORD;{:118}{124:}ROVER:HALFWORD;
    51  {:124}{165:}{FREE:PACKED ARRAY[MEMMIN..MEMMAX]OF BOOLEAN;
    52  WASFREE:PACKED ARRAY[MEMMIN..MEMMAX]OF BOOLEAN;
    53  WASMEMEND,WASLOMAX,WASHIMIN:HALFWORD;PANICKING:BOOLEAN;}
    54  {:165}{173:}FONTINSHORTDISPLAY:INTEGER;
    55  {:173}{181:}DEPTHTHRESHOLD:INTEGER;BREADTHMAX:INTEGER;
    56  {:181}{213:}NEST:ARRAY[0..NESTSIZE]OF LISTSTATERECORD;
    57  NESTPTR:0..NESTSIZE;MAXNESTSTACK:0..NESTSIZE;CURLIST:LISTSTATERECORD;
    58  SHOWNMODE:-203..203;{:213}{246:}OLDSETTING:0..21;
    59  SYSTIME,SYSDAY,SYSMONTH,SYSYEAR:INTEGER;
    60  {:246}{253:}EQTB:ARRAY[1..6106]OF MEMORYWORD;
    61  XEQLEVEL:ARRAY[5263..6106]OF QUARTERWORD;
    62  {:253}{256:}HASH:ARRAY[514..2880]OF TWOHALVES;HASHUSED:HALFWORD;
    63  NONEWCONTROLSEQUENCE:BOOLEAN;CSCOUNT:INTEGER;
    64  {:256}{271:}SAVESTACK:ARRAY[0..SAVESIZE]OF MEMORYWORD;
    65  SAVEPTR:0..SAVESIZE;MAXSAVESTACK:0..SAVESIZE;CURLEVEL:QUARTERWORD;
    66  CURGROUP:GROUPCODE;CURBOUNDARY:0..SAVESIZE;{:271}{286:}MAGSET:INTEGER;
    67  {:286}{297:}CURCMD:EIGHTBITS;CURCHR:HALFWORD;CURCS:HALFWORD;
    68  CURTOK:HALFWORD;
    69  {:297}{301:}INPUTSTACK:ARRAY[0..STACKSIZE]OF INSTATERECORD;
    70  INPUTPTR:0..STACKSIZE;MAXINSTACK:0..STACKSIZE;CURINPUT:INSTATERECORD;
    71  {:301}{304:}INOPEN:0..MAXINOPEN;OPENPARENS:0..MAXINOPEN;
    72  INPUTFILE:ARRAY[1..MAXINOPEN]OF ALPHAFILE;LINE:INTEGER;
    73  LINESTACK:ARRAY[1..MAXINOPEN]OF INTEGER;{:304}{305:}SCANNERSTATUS:0..5;
    74  WARNINGINDEX:HALFWORD;DEFREF:HALFWORD;
    75  {:305}{308:}PARAMSTACK:ARRAY[0..PARAMSIZE]OF HALFWORD;
    76  PARAMPTR:0..PARAMSIZE;MAXPARAMSTACK:INTEGER;
    77  {:308}{309:}ALIGNSTATE:INTEGER;{:309}{310:}BASEPTR:0..STACKSIZE;
    78  {:310}{333:}PARLOC:HALFWORD;PARTOKEN:HALFWORD;
    79  {:333}{361:}FORCEEOF:BOOLEAN;{:361}{382:}CURMARK:ARRAY[0..4]OF HALFWORD;
    80  {:382}{387:}LONGSTATE:111..114;
    81  {:387}{388:}PSTACK:ARRAY[0..8]OF HALFWORD;{:388}{410:}CURVAL:INTEGER;
    82  CURVALLEVEL:0..5;{:410}{438:}RADIX:SMALLNUMBER;
    83  {:438}{447:}CURORDER:GLUEORD;
    84  {:447}{480:}READFILE:ARRAY[0..15]OF ALPHAFILE;
    85  READOPEN:ARRAY[0..16]OF 0..2;{:480}{489:}CONDPTR:HALFWORD;IFLIMIT:0..4;
    86  CURIF:SMALLNUMBER;IFLINE:INTEGER;{:489}{493:}SKIPLINE:INTEGER;
    87  {:493}{512:}CURNAME:STRNUMBER;CURAREA:STRNUMBER;CUREXT:STRNUMBER;
    88  {:512}{513:}AREADELIMITER:POOLPOINTER;EXTDELIMITER:POOLPOINTER;
    89  {:513}{520:}TEXFORMATDEFAULT:PACKED ARRAY[1..20]OF CHAR;
    90  {:520}{527:}NAMEINPROGRESS:BOOLEAN;JOBNAME:STRNUMBER;LOGOPENED:BOOLEAN;
    91  {:527}{532:}DVIFILE:BYTEFILE;OUTPUTFILENAME:STRNUMBER;LOGNAME:STRNUMBER;
    92  {:532}{539:}TFMFILE:BYTEFILE;BUF:EIGHTBITS;
    93  {:539}{549:}FONTINFO:ARRAY[FONTINDEX]OF MEMORYWORD;FMEMPTR:FONTINDEX;
    94  FONTPTR:INTERNALFONTNUMBER;
    95  FONTCHECK:ARRAY[INTERNALFONTNUMBER]OF FOURQUARTERS;
    96  FONTSIZE:ARRAY[INTERNALFONTNUMBER]OF SCALED;
    97  FONTDSIZE:ARRAY[INTERNALFONTNUMBER]OF SCALED;
    98  FONTPARAMS:ARRAY[INTERNALFONTNUMBER]OF FONTINDEX;
    99  FONTNAME:ARRAY[INTERNALFONTNUMBER]OF STRNUMBER;
   100  FONTAREA:ARRAY[INTERNALFONTNUMBER]OF STRNUMBER;
   101  FONTBC:ARRAY[INTERNALFONTNUMBER]OF EIGHTBITS;
   102  FONTEC:ARRAY[INTERNALFONTNUMBER]OF EIGHTBITS;
   103  FONTGLUE:ARRAY[INTERNALFONTNUMBER]OF HALFWORD;
   104  FONTUSED:ARRAY[INTERNALFONTNUMBER]OF BOOLEAN;
   105  HYPHENCHAR:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
   106  SKEWCHAR:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
   107  BCHARLABEL:ARRAY[INTERNALFONTNUMBER]OF FONTINDEX;
   108  FONTBCHAR:ARRAY[INTERNALFONTNUMBER]OF 0..256;
   109  FONTFALSEBCHAR:ARRAY[INTERNALFONTNUMBER]OF 0..256;
   110  {:549}{550:}CHARBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
   111  WIDTHBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
   112  HEIGHTBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
   113  DEPTHBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
   114  ITALICBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
   115  LIGKERNBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
   116  KERNBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
   117  EXTENBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
   118  PARAMBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
   119  {:550}{555:}NULLCHARACTER:FOURQUARTERS;{:555}{592:}TOTALPAGES:INTEGER;
   120  MAXV:SCALED;MAXH:SCALED;MAXPUSH:INTEGER;LASTBOP:INTEGER;
   121  DEADCYCLES:INTEGER;DOINGLEADERS:BOOLEAN;C,F:QUARTERWORD;
   122  RULEHT,RULEDP,RULEWD:SCALED;G:HALFWORD;LQ,LR:INTEGER;
   123  {:592}{595:}DVIBUF:ARRAY[DVIINDEX]OF EIGHTBITS;HALFBUF:DVIINDEX;
   124  DVILIMIT:DVIINDEX;DVIPTR:DVIINDEX;DVIOFFSET:INTEGER;DVIGONE:INTEGER;
   125  {:595}{605:}DOWNPTR,RIGHTPTR:HALFWORD;{:605}{616:}DVIH,DVIV:SCALED;
   126  CURH,CURV:SCALED;DVIF:INTERNALFONTNUMBER;CURS:INTEGER;
   127  {:616}{646:}TOTALSTRETCH,TOTALSHRINK:ARRAY[GLUEORD]OF SCALED;
   128  LASTBADNESS:INTEGER;{:646}{647:}ADJUSTTAIL:HALFWORD;
   129  {:647}{661:}PACKBEGINLINE:INTEGER;{:661}{684:}EMPTYFIELD:TWOHALVES;
   130  NULLDELIMITER:FOURQUARTERS;{:684}{719:}CURMLIST:HALFWORD;
   131  CURSTYLE:SMALLNUMBER;CURSIZE:SMALLNUMBER;CURMU:SCALED;
   132  MLISTPENALTIES:BOOLEAN;{:719}{724:}CURF:INTERNALFONTNUMBER;
   133  CURC:QUARTERWORD;CURI:FOURQUARTERS;{:724}{764:}MAGICOFFSET:INTEGER;
   134  {:764}{770:}CURALIGN:HALFWORD;CURSPAN:HALFWORD;CURLOOP:HALFWORD;
   135  ALIGNPTR:HALFWORD;CURHEAD,CURTAIL:HALFWORD;{:770}{814:}JUSTBOX:HALFWORD;
   136  {:814}{821:}PASSIVE:HALFWORD;PRINTEDNODE:HALFWORD;PASSNUMBER:HALFWORD;
   137  {:821}{823:}ACTIVEWIDTH:ARRAY[1..6]OF SCALED;
   138  CURACTIVEWIDTH:ARRAY[1..6]OF SCALED;BACKGROUND:ARRAY[1..6]OF SCALED;
   139  BREAKWIDTH:ARRAY[1..6]OF SCALED;{:823}{825:}NOSHRINKERRORYET:BOOLEAN;
   140  {:825}{828:}CURP:HALFWORD;SECONDPASS:BOOLEAN;FINALPASS:BOOLEAN;
   141  THRESHOLD:INTEGER;{:828}{833:}MINIMALDEMERITS:ARRAY[0..3]OF INTEGER;
   142  MINIMUMDEMERITS:INTEGER;BESTPLACE:ARRAY[0..3]OF HALFWORD;
   143  BESTPLLINE:ARRAY[0..3]OF HALFWORD;{:833}{839:}DISCWIDTH:SCALED;
   144  {:839}{847:}EASYLINE:HALFWORD;LASTSPECIALLINE:HALFWORD;
   145  FIRSTWIDTH:SCALED;SECONDWIDTH:SCALED;FIRSTINDENT:SCALED;
   146  SECONDINDENT:SCALED;{:847}{872:}BESTBET:HALFWORD;FEWESTDEMERITS:INTEGER;
   147  BESTLINE:HALFWORD;ACTUALLOOSENESS:INTEGER;LINEDIFF:INTEGER;
   148  {:872}{892:}HC:ARRAY[0..65]OF 0..256;HN:0..64;HA,HB:HALFWORD;
   149  HF:INTERNALFONTNUMBER;HU:ARRAY[0..63]OF 0..256;HYFCHAR:INTEGER;
   150  CURLANG,INITCURLANG:ASCIICODE;LHYF,RHYF,INITLHYF,INITRHYF:INTEGER;
   151  HYFBCHAR:HALFWORD;{:892}{900:}HYF:ARRAY[0..64]OF 0..9;INITLIST:HALFWORD;
   152  INITLIG:BOOLEAN;INITLFT:BOOLEAN;{:900}{905:}HYPHENPASSED:SMALLNUMBER;
   153  {:905}{907:}CURL,CURR:HALFWORD;CURQ:HALFWORD;LIGSTACK:HALFWORD;
   154  LIGATUREPRESENT:BOOLEAN;LFTHIT,RTHIT:BOOLEAN;
   155  {:907}{921:}TRIE:ARRAY[TRIEPOINTER]OF TWOHALVES;
   156  HYFDISTANCE:ARRAY[1..TRIEOPSIZE]OF SMALLNUMBER;
   157  HYFNUM:ARRAY[1..TRIEOPSIZE]OF SMALLNUMBER;
   158  HYFNEXT:ARRAY[1..TRIEOPSIZE]OF QUARTERWORD;
   159  OPSTART:ARRAY[ASCIICODE]OF 0..TRIEOPSIZE;
   160  {:921}{926:}HYPHWORD:ARRAY[HYPHPOINTER]OF STRNUMBER;
   161  HYPHLIST:ARRAY[HYPHPOINTER]OF HALFWORD;HYPHCOUNT:HYPHPOINTER;
   162  {:926}{943:}TRIEOPHASH:ARRAY[-TRIEOPSIZE..TRIEOPSIZE]OF 0..TRIEOPSIZE;
   163  TRIEUSED:ARRAY[ASCIICODE]OF QUARTERWORD;
   164  TRIEOPLANG:ARRAY[1..TRIEOPSIZE]OF ASCIICODE;
   165  TRIEOPVAL:ARRAY[1..TRIEOPSIZE]OF QUARTERWORD;TRIEOPPTR:0..TRIEOPSIZE;
   166  {:943}{947:}TRIEC:PACKED ARRAY[TRIEPOINTER]OF PACKEDASCIICODE;
   167  TRIEO:PACKED ARRAY[TRIEPOINTER]OF QUARTERWORD;
   168  TRIEL:PACKED ARRAY[TRIEPOINTER]OF TRIEPOINTER;
   169  TRIER:PACKED ARRAY[TRIEPOINTER]OF TRIEPOINTER;TRIEPTR:TRIEPOINTER;
   170  TRIEHASH:PACKED ARRAY[TRIEPOINTER]OF TRIEPOINTER;
   171  {:947}{950:}TRIETAKEN:PACKED ARRAY[1..TRIESIZE]OF BOOLEAN;
   172  TRIEMIN:ARRAY[ASCIICODE]OF TRIEPOINTER;TRIEMAX:TRIEPOINTER;
   173  TRIENOTREADY:BOOLEAN;{:950}{971:}BESTHEIGHTPLUSDEPTH:SCALED;
   174  {:971}{980:}PAGETAIL:HALFWORD;PAGECONTENTS:0..2;PAGEMAXDEPTH:SCALED;
   175  BESTPAGEBREAK:HALFWORD;LEASTPAGECOST:INTEGER;BESTSIZE:SCALED;
   176  {:980}{982:}PAGESOFAR:ARRAY[0..7]OF SCALED;LASTGLUE:HALFWORD;
   177  LASTPENALTY:INTEGER;LASTKERN:SCALED;INSERTPENALTIES:INTEGER;
   178  {:982}{989:}OUTPUTACTIVE:BOOLEAN;{:989}{1032:}MAINF:INTERNALFONTNUMBER;
   179  MAINI:FOURQUARTERS;MAINJ:FOURQUARTERS;MAINK:FONTINDEX;MAINP:HALFWORD;
   180  MAINS:INTEGER;BCHAR:HALFWORD;FALSEBCHAR:HALFWORD;CANCELBOUNDARY:BOOLEAN;
   181  INSDISC:BOOLEAN;{:1032}{1074:}CURBOX:HALFWORD;
   182  {:1074}{1266:}AFTERTOKEN:HALFWORD;{:1266}{1281:}LONGHELPSEEN:BOOLEAN;
   183  {:1281}{1299:}FORMATIDENT:STRNUMBER;{:1299}{1305:}FMTFILE:WORDFILE;
   184  {:1305}{1331:}READYALREADY:INTEGER;
   185  {:1331}{1342:}WRITEFILE:ARRAY[0..15]OF ALPHAFILE;
   186  WRITEOPEN:ARRAY[0..17]OF BOOLEAN;{:1342}{1345:}WRITELOC:HALFWORD;
   187  {:1345}PROCEDURE INITIALIZE;VAR{19:}I:INTEGER;{:19}{163:}K:INTEGER;
   188  {:163}{927:}Z:HYPHPOINTER;{:927}BEGIN{8:}{21:}XCHR[32]:=' ';
   189  XCHR[33]:='!';XCHR[34]:='"';XCHR[35]:='#';XCHR[36]:='$';XCHR[37]:='%';
   190  XCHR[38]:='&';XCHR[39]:='''';XCHR[40]:='(';XCHR[41]:=')';XCHR[42]:='*';
   191  XCHR[43]:='+';XCHR[44]:=',';XCHR[45]:='-';XCHR[46]:='.';XCHR[47]:='/';
   192  XCHR[48]:='0';XCHR[49]:='1';XCHR[50]:='2';XCHR[51]:='3';XCHR[52]:='4';
   193  XCHR[53]:='5';XCHR[54]:='6';XCHR[55]:='7';XCHR[56]:='8';XCHR[57]:='9';
   194  XCHR[58]:=':';XCHR[59]:=';';XCHR[60]:='<';XCHR[61]:='=';XCHR[62]:='>';
   195  XCHR[63]:='?';XCHR[64]:='@';XCHR[65]:='A';XCHR[66]:='B';XCHR[67]:='C';
   196  XCHR[68]:='D';XCHR[69]:='E';XCHR[70]:='F';XCHR[71]:='G';XCHR[72]:='H';
   197  XCHR[73]:='I';XCHR[74]:='J';XCHR[75]:='K';XCHR[76]:='L';XCHR[77]:='M';
   198  XCHR[78]:='N';XCHR[79]:='O';XCHR[80]:='P';XCHR[81]:='Q';XCHR[82]:='R';
   199  XCHR[83]:='S';XCHR[84]:='T';XCHR[85]:='U';XCHR[86]:='V';XCHR[87]:='W';
   200  XCHR[88]:='X';XCHR[89]:='Y';XCHR[90]:='Z';XCHR[91]:='[';XCHR[92]:='\';
   201  XCHR[93]:=']';XCHR[94]:='^';XCHR[95]:='_';XCHR[96]:='`';XCHR[97]:='a';
   202  XCHR[98]:='b';XCHR[99]:='c';XCHR[100]:='d';XCHR[101]:='e';
   203  XCHR[102]:='f';XCHR[103]:='g';XCHR[104]:='h';XCHR[105]:='i';
   204  XCHR[106]:='j';XCHR[107]:='k';XCHR[108]:='l';XCHR[109]:='m';
   205  XCHR[110]:='n';XCHR[111]:='o';XCHR[112]:='p';XCHR[113]:='q';
   206  XCHR[114]:='r';XCHR[115]:='s';XCHR[116]:='t';XCHR[117]:='u';
   207  XCHR[118]:='v';XCHR[119]:='w';XCHR[120]:='x';XCHR[121]:='y';
   208  XCHR[122]:='z';XCHR[123]:='{';XCHR[124]:='|';XCHR[125]:='}';
   209  XCHR[126]:='~';{:21}{23:}FOR I:=0 TO 31 DO XCHR[I]:=' ';
   210  FOR I:=127 TO 255 DO XCHR[I]:=' ';
   211  {:23}{24:}FOR I:=0 TO 255 DO XORD[CHR(I)]:=127;
   212  FOR I:=128 TO 255 DO XORD[XCHR[I]]:=I;
   213  FOR I:=0 TO 126 DO XORD[XCHR[I]]:=I;{:24}{74:}INTERACTION:=3;
   214  {:74}{77:}DELETIONSALLOWED:=TRUE;SETBOXALLOWED:=TRUE;ERRORCOUNT:=0;
   215  {:77}{80:}HELPPTR:=0;USEERRHELP:=FALSE;{:80}{97:}INTERRUPT:=0;
   216  OKTOINTERRUPT:=TRUE;{:97}{166:}{WASMEMEND:=MEMMIN;WASLOMAX:=MEMMIN;
   217  WASHIMIN:=MEMMAX;PANICKING:=FALSE;}{:166}{215:}NESTPTR:=0;
   218  MAXNESTSTACK:=0;CURLIST.MODEFIELD:=1;CURLIST.HEADFIELD:=29999;
   219  CURLIST.TAILFIELD:=29999;CURLIST.AUXFIELD.INT:=-65536000;
   220  CURLIST.MLFIELD:=0;CURLIST.PGFIELD:=0;SHOWNMODE:=0;
   221  {991:}PAGECONTENTS:=0;PAGETAIL:=29998;MEM[29998].HH.RH:=0;
   222  LASTGLUE:=65535;LASTPENALTY:=0;LASTKERN:=0;PAGESOFAR[7]:=0;
   223  PAGEMAXDEPTH:=0{:991};{:215}{254:}FOR K:=5263 TO 6106 DO XEQLEVEL[K]:=1;
   224  {:254}{257:}NONEWCONTROLSEQUENCE:=TRUE;HASH[514].LH:=0;HASH[514].RH:=0;
   225  FOR K:=515 TO 2880 DO HASH[K]:=HASH[514];{:257}{272:}SAVEPTR:=0;
   226  CURLEVEL:=1;CURGROUP:=0;CURBOUNDARY:=0;MAXSAVESTACK:=0;
   227  {:272}{287:}MAGSET:=0;{:287}{383:}CURMARK[0]:=0;CURMARK[1]:=0;
   228  CURMARK[2]:=0;CURMARK[3]:=0;CURMARK[4]:=0;{:383}{439:}CURVAL:=0;
   229  CURVALLEVEL:=0;RADIX:=0;CURORDER:=0;
   230  {:439}{481:}FOR K:=0 TO 16 DO READOPEN[K]:=2;{:481}{490:}CONDPTR:=0;
   231  IFLIMIT:=0;CURIF:=0;IFLINE:=0;
   232  {:490}{521:}TEXFORMATDEFAULT:='TeXformats:plain.fmt';
   233  {:521}{551:}FOR K:=0 TO FONTMAX DO FONTUSED[K]:=FALSE;
   234  {:551}{556:}NULLCHARACTER.B0:=0;NULLCHARACTER.B1:=0;NULLCHARACTER.B2:=0;
   235  NULLCHARACTER.B3:=0;{:556}{593:}TOTALPAGES:=0;MAXV:=0;MAXH:=0;
   236  MAXPUSH:=0;LASTBOP:=-1;DOINGLEADERS:=FALSE;DEADCYCLES:=0;CURS:=-1;
   237  {:593}{596:}HALFBUF:=DVIBUFSIZE DIV 2;DVILIMIT:=DVIBUFSIZE;DVIPTR:=0;
   238  DVIOFFSET:=0;DVIGONE:=0;{:596}{606:}DOWNPTR:=0;RIGHTPTR:=0;
   239  {:606}{648:}ADJUSTTAIL:=0;LASTBADNESS:=0;{:648}{662:}PACKBEGINLINE:=0;
   240  {:662}{685:}EMPTYFIELD.RH:=0;EMPTYFIELD.LH:=0;NULLDELIMITER.B0:=0;
   241  NULLDELIMITER.B1:=0;NULLDELIMITER.B2:=0;NULLDELIMITER.B3:=0;
   242  {:685}{771:}ALIGNPTR:=0;CURALIGN:=0;CURSPAN:=0;CURLOOP:=0;CURHEAD:=0;
   243  CURTAIL:=0;{:771}{928:}FOR Z:=0 TO 307 DO BEGIN HYPHWORD[Z]:=0;
   244  HYPHLIST[Z]:=0;END;HYPHCOUNT:=0;{:928}{990:}OUTPUTACTIVE:=FALSE;
   245  INSERTPENALTIES:=0;{:990}{1033:}LIGATUREPRESENT:=FALSE;
   246  CANCELBOUNDARY:=FALSE;LFTHIT:=FALSE;RTHIT:=FALSE;INSDISC:=FALSE;
   247  {:1033}{1267:}AFTERTOKEN:=0;{:1267}{1282:}LONGHELPSEEN:=FALSE;
   248  {:1282}{1300:}FORMATIDENT:=0;
   249  {:1300}{1343:}FOR K:=0 TO 17 DO WRITEOPEN[K]:=FALSE;
   250  {:1343}{164:}FOR K:=1 TO 19 DO MEM[K].INT:=0;K:=0;
   251  WHILE K<=19 DO BEGIN MEM[K].HH.RH:=1;MEM[K].HH.B0:=0;MEM[K].HH.B1:=0;
   252  K:=K+4;END;MEM[6].INT:=65536;MEM[4].HH.B0:=1;MEM[10].INT:=65536;
   253  MEM[8].HH.B0:=2;MEM[14].INT:=65536;MEM[12].HH.B0:=1;MEM[15].INT:=65536;
   254  MEM[12].HH.B1:=1;MEM[18].INT:=-65536;MEM[16].HH.B0:=1;ROVER:=20;
   255  MEM[ROVER].HH.RH:=65535;MEM[ROVER].HH.LH:=1000;
   256  MEM[ROVER+1].HH.LH:=ROVER;MEM[ROVER+1].HH.RH:=ROVER;
   257  LOMEMMAX:=ROVER+1000;MEM[LOMEMMAX].HH.RH:=0;MEM[LOMEMMAX].HH.LH:=0;
   258  FOR K:=29987 TO 30000 DO MEM[K]:=MEM[LOMEMMAX];
   259  {790:}MEM[29990].HH.LH:=6714;{:790}{797:}MEM[29991].HH.RH:=256;
   260  MEM[29991].HH.LH:=0;{:797}{820:}MEM[29993].HH.B0:=1;
   261  MEM[29994].HH.LH:=65535;MEM[29993].HH.B1:=0;
   262  {:820}{981:}MEM[30000].HH.B1:=255;MEM[30000].HH.B0:=1;
   263  MEM[30000].HH.RH:=30000;{:981}{988:}MEM[29998].HH.B0:=10;
   264  MEM[29998].HH.B1:=0;{:988};AVAIL:=0;MEMEND:=30000;HIMEMMIN:=29987;
   265  VARUSED:=20;DYNUSED:=14;{:164}{222:}EQTB[2881].HH.B0:=101;
   266  EQTB[2881].HH.RH:=0;EQTB[2881].HH.B1:=0;
   267  FOR K:=1 TO 2880 DO EQTB[K]:=EQTB[2881];{:222}{228:}EQTB[2882].HH.RH:=0;
   268  EQTB[2882].HH.B1:=1;EQTB[2882].HH.B0:=117;
   269  FOR K:=2883 TO 3411 DO EQTB[K]:=EQTB[2882];
   270  MEM[0].HH.RH:=MEM[0].HH.RH+530;{:228}{232:}EQTB[3412].HH.RH:=0;
   271  EQTB[3412].HH.B0:=118;EQTB[3412].HH.B1:=1;
   272  FOR K:=3413 TO 3677 DO EQTB[K]:=EQTB[2881];EQTB[3678].HH.RH:=0;
   273  EQTB[3678].HH.B0:=119;EQTB[3678].HH.B1:=1;
   274  FOR K:=3679 TO 3933 DO EQTB[K]:=EQTB[3678];EQTB[3934].HH.RH:=0;
   275  EQTB[3934].HH.B0:=120;EQTB[3934].HH.B1:=1;
   276  FOR K:=3935 TO 3982 DO EQTB[K]:=EQTB[3934];EQTB[3983].HH.RH:=0;
   277  EQTB[3983].HH.B0:=120;EQTB[3983].HH.B1:=1;
   278  FOR K:=3984 TO 5262 DO EQTB[K]:=EQTB[3983];
   279  FOR K:=0 TO 255 DO BEGIN EQTB[3983+K].HH.RH:=12;EQTB[5007+K].HH.RH:=K+0;
   280  EQTB[4751+K].HH.RH:=1000;END;EQTB[3996].HH.RH:=5;EQTB[4015].HH.RH:=10;
   281  EQTB[4075].HH.RH:=0;EQTB[4020].HH.RH:=14;EQTB[4110].HH.RH:=15;
   282  EQTB[3983].HH.RH:=9;FOR K:=48 TO 57 DO EQTB[5007+K].HH.RH:=K+28672;
   283  FOR K:=65 TO 90 DO BEGIN EQTB[3983+K].HH.RH:=11;
   284  EQTB[3983+K+32].HH.RH:=11;EQTB[5007+K].HH.RH:=K+28928;
   285  EQTB[5007+K+32].HH.RH:=K+28960;EQTB[4239+K].HH.RH:=K+32;
   286  EQTB[4239+K+32].HH.RH:=K+32;EQTB[4495+K].HH.RH:=K;
   287  EQTB[4495+K+32].HH.RH:=K;EQTB[4751+K].HH.RH:=999;END;
   288  {:232}{240:}FOR K:=5263 TO 5573 DO EQTB[K].INT:=0;EQTB[5280].INT:=1000;
   289  EQTB[5264].INT:=10000;EQTB[5304].INT:=1;EQTB[5303].INT:=25;
   290  EQTB[5308].INT:=92;EQTB[5311].INT:=13;
   291  FOR K:=0 TO 255 DO EQTB[5574+K].INT:=-1;EQTB[5620].INT:=0;
   292  {:240}{250:}FOR K:=5830 TO 6106 DO EQTB[K].INT:=0;
   293  {:250}{258:}HASHUSED:=2614;CSCOUNT:=0;EQTB[2623].HH.B0:=116;
   294  HASH[2623].RH:=502;{:258}{552:}FONTPTR:=0;FMEMPTR:=7;FONTNAME[0]:=801;
   295  FONTAREA[0]:=338;HYPHENCHAR[0]:=45;SKEWCHAR[0]:=-1;BCHARLABEL[0]:=0;
   296  FONTBCHAR[0]:=256;FONTFALSEBCHAR[0]:=256;FONTBC[0]:=1;FONTEC[0]:=0;
   297  FONTSIZE[0]:=0;FONTDSIZE[0]:=0;CHARBASE[0]:=0;WIDTHBASE[0]:=0;
   298  HEIGHTBASE[0]:=0;DEPTHBASE[0]:=0;ITALICBASE[0]:=0;LIGKERNBASE[0]:=0;
   299  KERNBASE[0]:=0;EXTENBASE[0]:=0;FONTGLUE[0]:=0;FONTPARAMS[0]:=7;
   300  PARAMBASE[0]:=-1;FOR K:=0 TO 6 DO FONTINFO[K].INT:=0;
   301  {:552}{946:}FOR K:=-TRIEOPSIZE TO TRIEOPSIZE DO TRIEOPHASH[K]:=0;
   302  FOR K:=0 TO 255 DO TRIEUSED[K]:=0;TRIEOPPTR:=0;
   303  {:946}{951:}TRIENOTREADY:=TRUE;TRIEL[0]:=0;TRIEC[0]:=0;TRIEPTR:=0;
   304  {:951}{1216:}HASH[2614].RH:=1190;{:1216}{1301:}FORMATIDENT:=1257;
   305  {:1301}{1369:}HASH[2622].RH:=1296;EQTB[2622].HH.B1:=1;
   306  EQTB[2622].HH.B0:=113;EQTB[2622].HH.RH:=0;{:1369}{:8}END;
   307  {57:}PROCEDURE PRINTLN;BEGIN CASE SELECTOR OF 19:BEGIN WRITELN(TERMOUT);
   308  WRITELN(LOGFILE);TERMOFFSET:=0;FILEOFFSET:=0;END;
   309  18:BEGIN WRITELN(LOGFILE);FILEOFFSET:=0;END;17:BEGIN WRITELN(TERMOUT);
   310  TERMOFFSET:=0;END;16,20,21:;ELSE WRITELN(WRITEFILE[SELECTOR])END;END;
   311  {:57}{58:}PROCEDURE PRINTCHAR(S:ASCIICODE);LABEL 10;
   312  BEGIN IF{244:}S=EQTB[5312].INT{:244}THEN IF SELECTOR<20 THEN BEGIN
   313  PRINTLN;GOTO 10;END;CASE SELECTOR OF 19:BEGIN WRITE(TERMOUT,XCHR[S]);
   314  WRITE(LOGFILE,XCHR[S]);TERMOFFSET:=TERMOFFSET+1;
   315  FILEOFFSET:=FILEOFFSET+1;
   316  IF TERMOFFSET=MAXPRINTLINE THEN BEGIN WRITELN(TERMOUT);TERMOFFSET:=0;
   317  END;IF FILEOFFSET=MAXPRINTLINE THEN BEGIN WRITELN(LOGFILE);
   318  FILEOFFSET:=0;END;END;18:BEGIN WRITE(LOGFILE,XCHR[S]);
   319  FILEOFFSET:=FILEOFFSET+1;IF FILEOFFSET=MAXPRINTLINE THEN PRINTLN;END;
   320  17:BEGIN WRITE(TERMOUT,XCHR[S]);TERMOFFSET:=TERMOFFSET+1;
   321  IF TERMOFFSET=MAXPRINTLINE THEN PRINTLN;END;16:;
   322  20:IF TALLY<TRICKCOUNT THEN TRICKBUF[TALLY MOD ERRORLINE]:=S;
   323  21:BEGIN IF POOLPTR<POOLSIZE THEN BEGIN STRPOOL[POOLPTR]:=S;
   324  POOLPTR:=POOLPTR+1;END;END;ELSE WRITE(WRITEFILE[SELECTOR],XCHR[S])END;
   325  TALLY:=TALLY+1;10:END;{:58}{59:}PROCEDURE PRINT(S:INTEGER);LABEL 10;
   326  VAR J:POOLPOINTER;NL:INTEGER;
   327  BEGIN IF S>=STRPTR THEN S:=259 ELSE IF S<256 THEN IF S<0 THEN S:=259
   328  ELSE BEGIN IF SELECTOR>20 THEN BEGIN PRINTCHAR(S);GOTO 10;END;
   329  IF({244:}S=EQTB[5312].INT{:244})THEN IF SELECTOR<20 THEN BEGIN PRINTLN;
   330  GOTO 10;END;NL:=EQTB[5312].INT;EQTB[5312].INT:=-1;J:=STRSTART[S];
   331  WHILE J<STRSTART[S+1]DO BEGIN PRINTCHAR(STRPOOL[J]);J:=J+1;END;
   332  EQTB[5312].INT:=NL;GOTO 10;END;J:=STRSTART[S];
   333  WHILE J<STRSTART[S+1]DO BEGIN PRINTCHAR(STRPOOL[J]);J:=J+1;END;10:END;
   334  {:59}{60:}PROCEDURE SLOWPRINT(S:INTEGER);VAR J:POOLPOINTER;
   335  BEGIN IF(S>=STRPTR)OR(S<256)THEN PRINT(S)ELSE BEGIN J:=STRSTART[S];
   336  WHILE J<STRSTART[S+1]DO BEGIN PRINT(STRPOOL[J]);J:=J+1;END;END;END;
   337  {:60}{62:}PROCEDURE PRINTNL(S:STRNUMBER);
   338  BEGIN IF((TERMOFFSET>0)AND(ODD(SELECTOR)))OR((FILEOFFSET>0)AND(SELECTOR
   339  >=18))THEN PRINTLN;PRINT(S);END;
   340  {:62}{63:}PROCEDURE PRINTESC(S:STRNUMBER);VAR C:INTEGER;
   341  BEGIN{243:}C:=EQTB[5308].INT{:243};IF C>=0 THEN IF C<256 THEN PRINT(C);
   342  SLOWPRINT(S);END;{:63}{64:}PROCEDURE PRINTTHEDIGS(K:EIGHTBITS);
   343  BEGIN WHILE K>0 DO BEGIN K:=K-1;
   344  IF DIG[K]<10 THEN PRINTCHAR(48+DIG[K])ELSE PRINTCHAR(55+DIG[K]);END;END;
   345  {:64}{65:}PROCEDURE PRINTINT(N:INTEGER);VAR K:0..23;M:INTEGER;
   346  BEGIN K:=0;IF N<0 THEN BEGIN PRINTCHAR(45);
   347  IF N>-100000000 THEN N:=-N ELSE BEGIN M:=-1-N;N:=M DIV 10;
   348  M:=(M MOD 10)+1;K:=1;IF M<10 THEN DIG[0]:=M ELSE BEGIN DIG[0]:=0;N:=N+1;
   349  END;END;END;REPEAT DIG[K]:=N MOD 10;N:=N DIV 10;K:=K+1;UNTIL N=0;
   350  PRINTTHEDIGS(K);END;{:65}{262:}PROCEDURE PRINTCS(P:INTEGER);
   351  BEGIN IF P<514 THEN IF P>=257 THEN IF P=513 THEN BEGIN PRINTESC(504);
   352  PRINTESC(505);PRINTCHAR(32);END ELSE BEGIN PRINTESC(P-257);
   353  IF EQTB[3983+P-257].HH.RH=11 THEN PRINTCHAR(32);
   354  END ELSE IF P<1 THEN PRINTESC(506)ELSE PRINT(P-1)ELSE IF P>=2881 THEN
   355  PRINTESC(506)ELSE IF(HASH[P].RH<0)OR(HASH[P].RH>=STRPTR)THEN PRINTESC(
   356  507)ELSE BEGIN PRINTESC(HASH[P].RH);PRINTCHAR(32);END;END;
   357  {:262}{263:}PROCEDURE SPRINTCS(P:HALFWORD);
   358  BEGIN IF P<514 THEN IF P<257 THEN PRINT(P-1)ELSE IF P<513 THEN PRINTESC(
   359  P-257)ELSE BEGIN PRINTESC(504);PRINTESC(505);
   360  END ELSE PRINTESC(HASH[P].RH);END;
   361  {:263}{518:}PROCEDURE PRINTFILENAME(N,A,E:INTEGER);BEGIN SLOWPRINT(A);
   362  SLOWPRINT(N);SLOWPRINT(E);END;
   363  {:518}{699:}PROCEDURE PRINTSIZE(S:INTEGER);
   364  BEGIN IF S=0 THEN PRINTESC(412)ELSE IF S=16 THEN PRINTESC(413)ELSE
   365  PRINTESC(414);END;{:699}{1355:}PROCEDURE PRINTWRITEWHATSIT(S:STRNUMBER;
   366  P:HALFWORD);BEGIN PRINTESC(S);
   367  IF MEM[P+1].HH.LH<16 THEN PRINTINT(MEM[P+1].HH.LH)ELSE IF MEM[P+1].HH.LH
   368  =16 THEN PRINTCHAR(42)ELSE PRINTCHAR(45);END;
   369  {:1355}{78:}PROCEDURE NORMALIZESELECTOR;FORWARD;PROCEDURE GETTOKEN;
   370  FORWARD;PROCEDURE TERMINPUT;FORWARD;PROCEDURE SHOWCONTEXT;FORWARD;
   371  PROCEDURE BEGINFILEREADING;FORWARD;PROCEDURE OPENLOGFILE;FORWARD;
   372  PROCEDURE CLOSEFILESANDTERMINATE;FORWARD;PROCEDURE CLEARFORERRORPROMPT;
   373  FORWARD;PROCEDURE GIVEERRHELP;FORWARD;{PROCEDURE DEBUGHELP;FORWARD;}
   374  {:78}{81:}PROCEDURE JUMPOUT;BEGIN PANIC(9998);END;
   375  {:81}{82:}PROCEDURE ERROR;LABEL 22,10;VAR C:ASCIICODE;
   376  S1,S2,S3,S4:INTEGER;BEGIN IF HISTORY<2 THEN HISTORY:=2;PRINTCHAR(46);
   377  SHOWCONTEXT;
   378  IF INTERACTION=3 THEN{83:}WHILE TRUE DO BEGIN 22:IF INTERACTION<>3 THEN
   379  GOTO 10;CLEARFORERRORPROMPT;BEGIN;PRINT(264);TERMINPUT;END;
   380  IF LAST=FIRST THEN GOTO 10;C:=BUFFER[FIRST];IF C>=97 THEN C:=C-32;
   381  {84:}CASE C OF 48,49,50,51,52,53,54,55,56,57:IF DELETIONSALLOWED THEN
   382  {88:}BEGIN S1:=CURTOK;S2:=CURCMD;S3:=CURCHR;S4:=ALIGNSTATE;
   383  ALIGNSTATE:=1000000;OKTOINTERRUPT:=FALSE;
   384  IF(LAST>FIRST+1)AND(BUFFER[FIRST+1]>=48)AND(BUFFER[FIRST+1]<=57)THEN C:=
   385  C*10+BUFFER[FIRST+1]-48*11 ELSE C:=C-48;WHILE C>0 DO BEGIN GETTOKEN;
   386  C:=C-1;END;CURTOK:=S1;CURCMD:=S2;CURCHR:=S3;ALIGNSTATE:=S4;
   387  OKTOINTERRUPT:=TRUE;BEGIN HELPPTR:=2;HELPLINE[1]:=279;HELPLINE[0]:=280;
   388  END;SHOWCONTEXT;GOTO 22;END{:88};{68:BEGIN DEBUGHELP;GOTO 22;END;}
   389  69:IF BASEPTR>0 THEN IF INPUTSTACK[BASEPTR].NAMEFIELD>=256 THEN BEGIN
   390  PRINTNL(265);SLOWPRINT(INPUTSTACK[BASEPTR].NAMEFIELD);PRINT(266);
   391  PRINTINT(LINE);INTERACTION:=2;JUMPOUT;END;
   392  72:{89:}BEGIN IF USEERRHELP THEN BEGIN GIVEERRHELP;USEERRHELP:=FALSE;
   393  END ELSE BEGIN IF HELPPTR=0 THEN BEGIN HELPPTR:=2;HELPLINE[1]:=281;
   394  HELPLINE[0]:=282;END;REPEAT HELPPTR:=HELPPTR-1;PRINT(HELPLINE[HELPPTR]);
   395  PRINTLN;UNTIL HELPPTR=0;END;BEGIN HELPPTR:=4;HELPLINE[3]:=283;
   396  HELPLINE[2]:=282;HELPLINE[1]:=284;HELPLINE[0]:=285;END;GOTO 22;END{:89};
   397  73:{87:}BEGIN BEGINFILEREADING;
   398  IF LAST>FIRST+1 THEN BEGIN CURINPUT.LOCFIELD:=FIRST+1;BUFFER[FIRST]:=32;
   399  END ELSE BEGIN BEGIN;PRINT(278);TERMINPUT;END;CURINPUT.LOCFIELD:=FIRST;
   400  END;FIRST:=LAST;CURINPUT.LIMITFIELD:=LAST-1;GOTO 10;END{:87};
   401  81,82,83:{86:}BEGIN ERRORCOUNT:=0;INTERACTION:=0+C-81;PRINT(273);
   402  CASE C OF 81:BEGIN PRINTESC(274);SELECTOR:=SELECTOR-1;END;
   403  82:PRINTESC(275);83:PRINTESC(276);END;PRINT(277);PRINTLN;;GOTO 10;
   404  END{:86};88:BEGIN INTERACTION:=2;JUMPOUT;END;ELSE END;
   405  {85:}BEGIN PRINT(267);PRINTNL(268);PRINTNL(269);
   406  IF BASEPTR>0 THEN IF INPUTSTACK[BASEPTR].NAMEFIELD>=256 THEN PRINT(270);
   407  IF DELETIONSALLOWED THEN PRINTNL(271);PRINTNL(272);END{:85}{:84};
   408  END{:83};ERRORCOUNT:=ERRORCOUNT+1;
   409  IF ERRORCOUNT=100 THEN BEGIN PRINTNL(263);HISTORY:=3;JUMPOUT;END;
   410  {90:}IF INTERACTION>0 THEN SELECTOR:=SELECTOR-1;
   411  IF USEERRHELP THEN BEGIN PRINTLN;GIVEERRHELP;
   412  END ELSE WHILE HELPPTR>0 DO BEGIN HELPPTR:=HELPPTR-1;
   413  PRINTNL(HELPLINE[HELPPTR]);END;PRINTLN;
   414  IF INTERACTION>0 THEN SELECTOR:=SELECTOR+1;PRINTLN{:90};10:END;
   415  {:82}{93:}PROCEDURE FATALERROR(S:STRNUMBER);BEGIN NORMALIZESELECTOR;
   416  BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(287);END;
   417  BEGIN HELPPTR:=1;HELPLINE[0]:=S;END;
   418  BEGIN IF INTERACTION=3 THEN INTERACTION:=2;IF LOGOPENED THEN ERROR;
   419  {IF INTERACTION>0 THEN DEBUGHELP;}HISTORY:=3;JUMPOUT;END;END;
   420  {:93}{94:}PROCEDURE OVERFLOW(S:STRNUMBER;N:INTEGER);
   421  BEGIN NORMALIZESELECTOR;BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
   422  PRINT(288);END;PRINT(S);PRINTCHAR(61);PRINTINT(N);PRINTCHAR(93);
   423  BEGIN HELPPTR:=2;HELPLINE[1]:=289;HELPLINE[0]:=290;END;
   424  BEGIN IF INTERACTION=3 THEN INTERACTION:=2;IF LOGOPENED THEN ERROR;
   425  {IF INTERACTION>0 THEN DEBUGHELP;}HISTORY:=3;JUMPOUT;END;END;
   426  {:94}{95:}PROCEDURE CONFUSION(S:STRNUMBER);BEGIN NORMALIZESELECTOR;
   427  IF HISTORY<2 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
   428  PRINT(291);END;PRINT(S);PRINTCHAR(41);BEGIN HELPPTR:=1;HELPLINE[0]:=292;
   429  END;END ELSE BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(293);
   430  END;BEGIN HELPPTR:=2;HELPLINE[1]:=294;HELPLINE[0]:=295;END;END;
   431  BEGIN IF INTERACTION=3 THEN INTERACTION:=2;IF LOGOPENED THEN ERROR;
   432  {IF INTERACTION>0 THEN DEBUGHELP;}HISTORY:=3;JUMPOUT;END;END;
   433  {:95}{:4}{27:}FUNCTION AOPENIN(VAR F:ALPHAFILE):BOOLEAN;
   434  BEGIN RESET(F,NAMEOFFILE,'/O');AOPENIN:=ERSTAT(F)=0;END;
   435  FUNCTION AOPENOUT(VAR F:ALPHAFILE):BOOLEAN;
   436  BEGIN REWRITE(F,NAMEOFFILE,'/O');AOPENOUT:=ERSTAT(F)=0;END;
   437  FUNCTION BOPENIN(VAR F:BYTEFILE):BOOLEAN;BEGIN RESET(F,NAMEOFFILE,'/O');
   438  BOPENIN:=ERSTAT(F)=0;END;FUNCTION BOPENOUT(VAR F:BYTEFILE):BOOLEAN;
   439  BEGIN REWRITE(F,NAMEOFFILE,'/O');BOPENOUT:=ERSTAT(F)=0;END;
   440  FUNCTION WOPENIN(VAR F:WORDFILE):BOOLEAN;BEGIN RESET(F,NAMEOFFILE,'/O');
   441  WOPENIN:=ERSTAT(F)=0;END;FUNCTION WOPENOUT(VAR F:WORDFILE):BOOLEAN;
   442  BEGIN REWRITE(F,NAMEOFFILE,'/O');WOPENOUT:=ERSTAT(F)=0;END;
   443  {:27}{28:}PROCEDURE ACLOSE(VAR F:ALPHAFILE);BEGIN CLOSE(F);END;
   444  PROCEDURE BCLOSE(VAR F:BYTEFILE);BEGIN CLOSE(F);END;
   445  PROCEDURE WCLOSE(VAR F:WORDFILE);BEGIN CLOSE(F);END;
   446  {:28}{31:}FUNCTION INPUTLN(VAR F:ALPHAFILE;BYPASSEOLN:BOOLEAN):BOOLEAN;
   447  VAR LASTNONBLANK:0..BUFSIZE;
   448  BEGIN IF BYPASSEOLN THEN IF NOT EOF(F)THEN GET(F);LAST:=FIRST;
   449  IF EOF(F)THEN INPUTLN:=FALSE ELSE BEGIN LASTNONBLANK:=FIRST;
   450  WHILE NOT EOLN(F)DO BEGIN IF LAST>=MAXBUFSTACK THEN BEGIN MAXBUFSTACK:=
   451  LAST+1;
   452  IF MAXBUFSTACK=BUFSIZE THEN{35:}IF FORMATIDENT=0 THEN BEGIN WRITELN(
   453  TERMOUT,'Buffer size exceeded!');PANIC(9999);
   454  END ELSE BEGIN CURINPUT.LOCFIELD:=FIRST;CURINPUT.LIMITFIELD:=LAST-1;
   455  OVERFLOW(256,BUFSIZE);END{:35};END;BUFFER[LAST]:=XORD[F^];GET(F);
   456  LAST:=LAST+1;IF BUFFER[LAST-1]<>32 THEN LASTNONBLANK:=LAST;END;
   457  LAST:=LASTNONBLANK;INPUTLN:=TRUE;END;END;
   458  {:31}{37:}FUNCTION INITTERMINAL:BOOLEAN;LABEL 10;
   459  BEGIN RESET(TERMIN,'TTY:','/O/I');WHILE TRUE DO BEGIN;
   460  WRITE(TERMOUT,'**');;
   461  IF NOT INPUTLN(TERMIN,TRUE)THEN BEGIN WRITELN(TERMOUT);
   462  WRITE(TERMOUT,'! End of file on the terminal... why?');
   463  INITTERMINAL:=FALSE;GOTO 10;END;CURINPUT.LOCFIELD:=FIRST;
   464  WHILE(CURINPUT.LOCFIELD<LAST)AND(BUFFER[CURINPUT.LOCFIELD]=32)DO
   465  CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
   466  IF CURINPUT.LOCFIELD<LAST THEN BEGIN INITTERMINAL:=TRUE;GOTO 10;END;
   467  WRITELN(TERMOUT,'Please type the name of your input file.');END;10:END;
   468  {:37}{43:}FUNCTION MAKESTRING:STRNUMBER;
   469  BEGIN IF STRPTR=MAXSTRINGS THEN OVERFLOW(258,MAXSTRINGS-INITSTRPTR);
   470  STRPTR:=STRPTR+1;STRSTART[STRPTR]:=POOLPTR;MAKESTRING:=STRPTR-1;END;
   471  {:43}{45:}FUNCTION STREQBUF(S:STRNUMBER;K:INTEGER):BOOLEAN;LABEL 45;
   472  VAR J:POOLPOINTER;RESULT:BOOLEAN;BEGIN J:=STRSTART[S];
   473  WHILE J<STRSTART[S+1]DO BEGIN IF STRPOOL[J]<>BUFFER[K]THEN BEGIN RESULT
   474  :=FALSE;GOTO 45;END;J:=J+1;K:=K+1;END;RESULT:=TRUE;45:STREQBUF:=RESULT;
   475  END;{:45}{46:}FUNCTION STREQSTR(S,T:STRNUMBER):BOOLEAN;LABEL 45;
   476  VAR J,K:POOLPOINTER;RESULT:BOOLEAN;BEGIN RESULT:=FALSE;
   477  IF(STRSTART[S+1]-STRSTART[S])<>(STRSTART[T+1]-STRSTART[T])THEN GOTO 45;
   478  J:=STRSTART[S];K:=STRSTART[T];
   479  WHILE J<STRSTART[S+1]DO BEGIN IF STRPOOL[J]<>STRPOOL[K]THEN GOTO 45;
   480  J:=J+1;K:=K+1;END;RESULT:=TRUE;45:STREQSTR:=RESULT;END;
   481  {:46}{47:}FUNCTION GETSTRINGSSTARTED:BOOLEAN;LABEL 30,10;VAR K,L:0..255;
   482  M,N:CHAR;G:STRNUMBER;A:INTEGER;C:BOOLEAN;BEGIN IF G=0 THEN;POOLPTR:=0;
   483  STRPTR:=0;STRSTART[0]:=0;
   484  {48:}FOR K:=0 TO 255 DO BEGIN IF({49:}(K<32)OR(K>126){:49})THEN BEGIN
   485  BEGIN STRPOOL[POOLPTR]:=94;POOLPTR:=POOLPTR+1;END;
   486  BEGIN STRPOOL[POOLPTR]:=94;POOLPTR:=POOLPTR+1;END;
   487  IF K<64 THEN BEGIN STRPOOL[POOLPTR]:=K+64;POOLPTR:=POOLPTR+1;
   488  END ELSE IF K<128 THEN BEGIN STRPOOL[POOLPTR]:=K-64;POOLPTR:=POOLPTR+1;
   489  END ELSE BEGIN L:=K DIV 16;IF L<10 THEN BEGIN STRPOOL[POOLPTR]:=L+48;
   490  POOLPTR:=POOLPTR+1;END ELSE BEGIN STRPOOL[POOLPTR]:=L+87;
   491  POOLPTR:=POOLPTR+1;END;L:=K MOD 16;
   492  IF L<10 THEN BEGIN STRPOOL[POOLPTR]:=L+48;POOLPTR:=POOLPTR+1;
   493  END ELSE BEGIN STRPOOL[POOLPTR]:=L+87;POOLPTR:=POOLPTR+1;END;END;
   494  END ELSE BEGIN STRPOOL[POOLPTR]:=K;POOLPTR:=POOLPTR+1;END;G:=MAKESTRING;
   495  END{:48};{51:}NAMEOFFILE:=POOLNAME;
   496  IF AOPENIN(POOLFILE)THEN BEGIN C:=FALSE;
   497  REPEAT{52:}BEGIN IF EOF(POOLFILE)THEN BEGIN;
   498  WRITELN(TERMOUT,'! TEX.POOL has no check sum.');ACLOSE(POOLFILE);
   499  GETSTRINGSSTARTED:=FALSE;GOTO 10;END;READ(POOLFILE,M,N);
   500  IF M='*'THEN{53:}BEGIN A:=0;K:=1;
   501  WHILE TRUE DO BEGIN IF(XORD[N]<48)OR(XORD[N]>57)THEN BEGIN;
   502  WRITELN(TERMOUT,'! TEX.POOL check sum doesn''t have nine digits.');
   503  ACLOSE(POOLFILE);GETSTRINGSSTARTED:=FALSE;GOTO 10;END;
   504  A:=10*A+XORD[N]-48;IF K=9 THEN GOTO 30;K:=K+1;READ(POOLFILE,N);END;
   505  30:IF A<>504454778 THEN BEGIN;
   506  WRITELN(TERMOUT,'! TEX.POOL doesn''t match; TANGLE me again.');
   507  ACLOSE(POOLFILE);GETSTRINGSSTARTED:=FALSE;GOTO 10;END;C:=TRUE;
   508  END{:53}ELSE BEGIN IF(XORD[M]<48)OR(XORD[M]>57)OR(XORD[N]<48)OR(XORD[N]>
   509  57)THEN BEGIN;
   510  WRITELN(TERMOUT,'! TEX.POOL line doesn''t begin with two digits.');
   511  ACLOSE(POOLFILE);GETSTRINGSSTARTED:=FALSE;GOTO 10;END;
   512  L:=XORD[M]*10+XORD[N]-48*11;
   513  IF POOLPTR+L+STRINGVACANCIES>POOLSIZE THEN BEGIN;
   514  WRITELN(TERMOUT,'! You have to increase POOLSIZE.');ACLOSE(POOLFILE);
   515  GETSTRINGSSTARTED:=FALSE;GOTO 10;END;
   516  FOR K:=1 TO L DO BEGIN IF EOLN(POOLFILE)THEN M:=' 'ELSE READ(POOLFILE,M)
   517  ;BEGIN STRPOOL[POOLPTR]:=XORD[M];POOLPTR:=POOLPTR+1;END;END;
   518  READLN(POOLFILE);G:=MAKESTRING;END;END{:52};UNTIL C;ACLOSE(POOLFILE);
   519  GETSTRINGSSTARTED:=TRUE;END ELSE BEGIN;
   520  WRITELN(TERMOUT,'! I can''t read TEX.POOL.');ACLOSE(POOLFILE);
   521  GETSTRINGSSTARTED:=FALSE;GOTO 10;END{:51};10:END;
   522  {:47}{66:}PROCEDURE PRINTTWO(N:INTEGER);BEGIN N:=ABS(N)MOD 100;
   523  PRINTCHAR(48+(N DIV 10));PRINTCHAR(48+(N MOD 10));END;
   524  {:66}{67:}PROCEDURE PRINTHEX(N:INTEGER);VAR K:0..22;BEGIN K:=0;
   525  PRINTCHAR(34);REPEAT DIG[K]:=N MOD 16;N:=N DIV 16;K:=K+1;UNTIL N=0;
   526  PRINTTHEDIGS(K);END;{:67}{69:}PROCEDURE PRINTROMANINT(N:INTEGER);
   527  LABEL 10;VAR J,K:POOLPOINTER;U,V:NONNEGATIVEINTEGER;
   528  BEGIN J:=STRSTART[260];V:=1000;
   529  WHILE TRUE DO BEGIN WHILE N>=V DO BEGIN PRINTCHAR(STRPOOL[J]);N:=N-V;
   530  END;IF N<=0 THEN GOTO 10;K:=J+2;U:=V DIV(STRPOOL[K-1]-48);
   531  IF STRPOOL[K-1]=50 THEN BEGIN K:=K+2;U:=U DIV(STRPOOL[K-1]-48);END;
   532  IF N+U>=V THEN BEGIN PRINTCHAR(STRPOOL[K]);N:=N+U;END ELSE BEGIN J:=J+2;
   533  V:=V DIV(STRPOOL[J-1]-48);END;END;10:END;
   534  {:69}{70:}PROCEDURE PRINTCURRENTSTRING;VAR J:POOLPOINTER;
   535  BEGIN J:=STRSTART[STRPTR];
   536  WHILE J<POOLPTR DO BEGIN PRINTCHAR(STRPOOL[J]);J:=J+1;END;END;
   537  {:70}{71:}PROCEDURE TERMINPUT;VAR K:0..BUFSIZE;BEGIN;
   538  IF NOT INPUTLN(TERMIN,TRUE)THEN FATALERROR(261);TERMOFFSET:=0;
   539  SELECTOR:=SELECTOR-1;
   540  IF LAST<>FIRST THEN FOR K:=FIRST TO LAST-1 DO PRINT(BUFFER[K]);PRINTLN;
   541  SELECTOR:=SELECTOR+1;END;{:71}{91:}PROCEDURE INTERROR(N:INTEGER);
   542  BEGIN PRINT(286);PRINTINT(N);PRINTCHAR(41);ERROR;END;
   543  {:91}{92:}PROCEDURE NORMALIZESELECTOR;
   544  BEGIN IF LOGOPENED THEN SELECTOR:=19 ELSE SELECTOR:=17;
   545  IF JOBNAME=0 THEN OPENLOGFILE;
   546  IF INTERACTION=0 THEN SELECTOR:=SELECTOR-1;END;
   547  {:92}{98:}PROCEDURE PAUSEFORINSTRUCTIONS;
   548  BEGIN IF OKTOINTERRUPT THEN BEGIN INTERACTION:=3;
   549  IF(SELECTOR=18)OR(SELECTOR=16)THEN SELECTOR:=SELECTOR+1;
   550  BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(296);END;
   551  BEGIN HELPPTR:=3;HELPLINE[2]:=297;HELPLINE[1]:=298;HELPLINE[0]:=299;END;
   552  DELETIONSALLOWED:=FALSE;ERROR;DELETIONSALLOWED:=TRUE;INTERRUPT:=0;END;
   553  END;{:98}{100:}FUNCTION HALF(X:INTEGER):INTEGER;
   554  BEGIN IF ODD(X)THEN HALF:=(X+1)DIV 2 ELSE HALF:=X DIV 2;END;
   555  {:100}{102:}FUNCTION ROUNDDECIMALS(K:SMALLNUMBER):SCALED;VAR A:INTEGER;
   556  BEGIN A:=0;WHILE K>0 DO BEGIN K:=K-1;A:=(A+DIG[K]*131072)DIV 10;END;
   557  ROUNDDECIMALS:=(A+1)DIV 2;END;
   558  {:102}{103:}PROCEDURE PRINTSCALED(S:SCALED);VAR DELTA:SCALED;
   559  BEGIN IF S<0 THEN BEGIN PRINTCHAR(45);S:=-S;END;PRINTINT(S DIV 65536);
   560  PRINTCHAR(46);S:=10*(S MOD 65536)+5;DELTA:=10;
   561  REPEAT IF DELTA>65536 THEN S:=S-17232;PRINTCHAR(48+(S DIV 65536));
   562  S:=10*(S MOD 65536);DELTA:=DELTA*10;UNTIL S<=DELTA;END;
   563  {:103}{105:}FUNCTION MULTANDADD(N:INTEGER;X,Y,MAXANSWER:SCALED):SCALED;
   564  BEGIN IF N<0 THEN BEGIN X:=-X;N:=-N;END;
   565  IF N=0 THEN MULTANDADD:=Y ELSE IF((X<=(MAXANSWER-Y)DIV N)AND(-X<=(
   566  MAXANSWER+Y)DIV N))THEN MULTANDADD:=N*X+Y ELSE BEGIN ARITHERROR:=TRUE;
   567  MULTANDADD:=0;END;END;{:105}{106:}FUNCTION XOVERN(X:SCALED;
   568  N:INTEGER):SCALED;VAR NEGATIVE:BOOLEAN;BEGIN NEGATIVE:=FALSE;
   569  IF N=0 THEN BEGIN ARITHERROR:=TRUE;XOVERN:=0;REMAINDER:=X;
   570  END ELSE BEGIN IF N<0 THEN BEGIN X:=-X;N:=-N;NEGATIVE:=TRUE;END;
   571  IF X>=0 THEN BEGIN XOVERN:=X DIV N;REMAINDER:=X MOD N;
   572  END ELSE BEGIN XOVERN:=-((-X)DIV N);REMAINDER:=-((-X)MOD N);END;END;
   573  IF NEGATIVE THEN REMAINDER:=-REMAINDER;END;
   574  {:106}{107:}FUNCTION XNOVERD(X:SCALED;N,D:INTEGER):SCALED;
   575  VAR POSITIVE:BOOLEAN;T,U,V:NONNEGATIVEINTEGER;
   576  BEGIN IF X>=0 THEN POSITIVE:=TRUE ELSE BEGIN X:=-X;POSITIVE:=FALSE;END;
   577  T:=(X MOD 32768)*N;U:=(X DIV 32768)*N+(T DIV 32768);
   578  V:=(U MOD D)*32768+(T MOD 32768);
   579  IF U DIV D>=32768 THEN ARITHERROR:=TRUE ELSE U:=32768*(U DIV D)+(V DIV D
   580  );IF POSITIVE THEN BEGIN XNOVERD:=U;REMAINDER:=V MOD D;
   581  END ELSE BEGIN XNOVERD:=-U;REMAINDER:=-(V MOD D);END;END;
   582  {:107}{108:}FUNCTION BADNESS(T,S:SCALED):HALFWORD;VAR R:INTEGER;
   583  BEGIN IF T=0 THEN BADNESS:=0 ELSE IF S<=0 THEN BADNESS:=10000 ELSE BEGIN
   584  IF T<=7230584 THEN R:=(T*297)DIV S ELSE IF S>=1663497 THEN R:=T DIV(S
   585  DIV 297)ELSE R:=T;
   586  IF R>1290 THEN BADNESS:=10000 ELSE BADNESS:=(R*R*R+131072)DIV 262144;
   587  END;END;{:108}{114:}{PROCEDURE PRINTWORD(W:MEMORYWORD);
   588  BEGIN PRINTINT(W.INT);PRINTCHAR(32);PRINTSCALED(W.INT);PRINTCHAR(32);
   589  PRINTSCALED(ROUND(65536*W.GR));PRINTLN;PRINTINT(W.HH.LH);PRINTCHAR(61);
   590  PRINTINT(W.HH.B0);PRINTCHAR(58);PRINTINT(W.HH.B1);PRINTCHAR(59);
   591  PRINTINT(W.HH.RH);PRINTCHAR(32);PRINTINT(W.QQQQ.B0);PRINTCHAR(58);
   592  PRINTINT(W.QQQQ.B1);PRINTCHAR(58);PRINTINT(W.QQQQ.B2);PRINTCHAR(58);
   593  PRINTINT(W.QQQQ.B3);END;}
   594  {:114}{119:}{292:}PROCEDURE SHOWTOKENLIST(P,Q:INTEGER;L:INTEGER);
   595  LABEL 10;VAR M,C:INTEGER;MATCHCHR:ASCIICODE;N:ASCIICODE;
   596  BEGIN MATCHCHR:=35;N:=48;TALLY:=0;
   597  WHILE(P<>0)AND(TALLY<L)DO BEGIN IF P=Q THEN{320:}BEGIN FIRSTCOUNT:=TALLY
   598  ;TRICKCOUNT:=TALLY+1+ERRORLINE-HALFERRORLINE;
   599  IF TRICKCOUNT<ERRORLINE THEN TRICKCOUNT:=ERRORLINE;END{:320};
   600  {293:}IF(P<HIMEMMIN)OR(P>MEMEND)THEN BEGIN PRINTESC(309);GOTO 10;END;
   601  IF MEM[P].HH.LH>=4095 THEN PRINTCS(MEM[P].HH.LH-4095)ELSE BEGIN M:=MEM[P
   602  ].HH.LH DIV 256;C:=MEM[P].HH.LH MOD 256;
   603  IF MEM[P].HH.LH<0 THEN PRINTESC(555)ELSE{294:}CASE M OF 1,2,3,4,7,8,10,
   604  11,12:PRINT(C);6:BEGIN PRINT(C);PRINT(C);END;5:BEGIN PRINT(MATCHCHR);
   605  IF C<=9 THEN PRINTCHAR(C+48)ELSE BEGIN PRINTCHAR(33);GOTO 10;END;END;
   606  13:BEGIN MATCHCHR:=C;PRINT(C);N:=N+1;PRINTCHAR(N);IF N>57 THEN GOTO 10;
   607  END;14:PRINT(556);ELSE PRINTESC(555)END{:294};END{:293};P:=MEM[P].HH.RH;
   608  END;IF P<>0 THEN PRINTESC(554);10:END;{:292}{306:}PROCEDURE RUNAWAY;
   609  VAR P:HALFWORD;BEGIN IF SCANNERSTATUS>1 THEN BEGIN PRINTNL(569);
   610  CASE SCANNERSTATUS OF 2:BEGIN PRINT(570);P:=DEFREF;END;
   611  3:BEGIN PRINT(571);P:=29997;END;4:BEGIN PRINT(572);P:=29996;END;
   612  5:BEGIN PRINT(573);P:=DEFREF;END;END;PRINTCHAR(63);PRINTLN;
   613  SHOWTOKENLIST(MEM[P].HH.RH,0,ERRORLINE-10);END;END;
   614  {:306}{:119}{120:}FUNCTION GETAVAIL:HALFWORD;VAR P:HALFWORD;
   615  BEGIN P:=AVAIL;
   616  IF P<>0 THEN AVAIL:=MEM[AVAIL].HH.RH ELSE IF MEMEND<MEMMAX THEN BEGIN
   617  MEMEND:=MEMEND+1;P:=MEMEND;END ELSE BEGIN HIMEMMIN:=HIMEMMIN-1;
   618  P:=HIMEMMIN;IF HIMEMMIN<=LOMEMMAX THEN BEGIN RUNAWAY;
   619  OVERFLOW(300,MEMMAX+1-MEMMIN);END;END;MEM[P].HH.RH:=0;
   620  {DYNUSED:=DYNUSED+1;}GETAVAIL:=P;END;
   621  {:120}{123:}PROCEDURE FLUSHLIST(P:HALFWORD);VAR Q,R:HALFWORD;
   622  BEGIN IF P<>0 THEN BEGIN R:=P;REPEAT Q:=R;R:=MEM[R].HH.RH;
   623  {DYNUSED:=DYNUSED-1;}UNTIL R=0;MEM[Q].HH.RH:=AVAIL;AVAIL:=P;END;END;
   624  {:123}{125:}FUNCTION GETNODE(S:INTEGER):HALFWORD;LABEL 40,10,20;
   625  VAR P:HALFWORD;Q:HALFWORD;R:INTEGER;T:INTEGER;BEGIN 20:P:=ROVER;
   626  REPEAT{127:}Q:=P+MEM[P].HH.LH;
   627  WHILE(MEM[Q].HH.RH=65535)DO BEGIN T:=MEM[Q+1].HH.RH;
   628  IF Q=ROVER THEN ROVER:=T;MEM[T+1].HH.LH:=MEM[Q+1].HH.LH;
   629  MEM[MEM[Q+1].HH.LH+1].HH.RH:=T;Q:=Q+MEM[Q].HH.LH;END;R:=Q-S;
   630  IF R>P+1 THEN{128:}BEGIN MEM[P].HH.LH:=R-P;ROVER:=P;GOTO 40;END{:128};
   631  IF R=P THEN IF MEM[P+1].HH.RH<>P THEN{129:}BEGIN ROVER:=MEM[P+1].HH.RH;
   632  T:=MEM[P+1].HH.LH;MEM[ROVER+1].HH.LH:=T;MEM[T+1].HH.RH:=ROVER;GOTO 40;
   633  END{:129};MEM[P].HH.LH:=Q-P{:127};P:=MEM[P+1].HH.RH;UNTIL P=ROVER;
   634  IF S=1073741824 THEN BEGIN GETNODE:=65535;GOTO 10;END;
   635  IF LOMEMMAX+2<HIMEMMIN THEN IF LOMEMMAX+2<=65535 THEN{126:}BEGIN IF
   636  HIMEMMIN-LOMEMMAX>=1998 THEN T:=LOMEMMAX+1000 ELSE T:=LOMEMMAX+1+(
   637  HIMEMMIN-LOMEMMAX)DIV 2;P:=MEM[ROVER+1].HH.LH;Q:=LOMEMMAX;
   638  MEM[P+1].HH.RH:=Q;MEM[ROVER+1].HH.LH:=Q;IF T>65535 THEN T:=65535;
   639  MEM[Q+1].HH.RH:=ROVER;MEM[Q+1].HH.LH:=P;MEM[Q].HH.RH:=65535;
   640  MEM[Q].HH.LH:=T-LOMEMMAX;LOMEMMAX:=T;MEM[LOMEMMAX].HH.RH:=0;
   641  MEM[LOMEMMAX].HH.LH:=0;ROVER:=Q;GOTO 20;END{:126};
   642  OVERFLOW(300,MEMMAX+1-MEMMIN);40:MEM[R].HH.RH:=0;{VARUSED:=VARUSED+S;}
   643  GETNODE:=R;10:END;{:125}{130:}PROCEDURE FREENODE(P:HALFWORD;S:HALFWORD);
   644  VAR Q:HALFWORD;BEGIN MEM[P].HH.LH:=S;MEM[P].HH.RH:=65535;
   645  Q:=MEM[ROVER+1].HH.LH;MEM[P+1].HH.LH:=Q;MEM[P+1].HH.RH:=ROVER;
   646  MEM[ROVER+1].HH.LH:=P;MEM[Q+1].HH.RH:=P;{VARUSED:=VARUSED-S;}END;
   647  {:130}{131:}PROCEDURE SORTAVAIL;VAR P,Q,R:HALFWORD;OLDROVER:HALFWORD;
   648  BEGIN P:=GETNODE(1073741824);P:=MEM[ROVER+1].HH.RH;
   649  MEM[ROVER+1].HH.RH:=65535;OLDROVER:=ROVER;
   650  WHILE P<>OLDROVER DO{132:}IF P<ROVER THEN BEGIN Q:=P;P:=MEM[Q+1].HH.RH;
   651  MEM[Q+1].HH.RH:=ROVER;ROVER:=Q;END ELSE BEGIN Q:=ROVER;
   652  WHILE MEM[Q+1].HH.RH<P DO Q:=MEM[Q+1].HH.RH;R:=MEM[P+1].HH.RH;
   653  MEM[P+1].HH.RH:=MEM[Q+1].HH.RH;MEM[Q+1].HH.RH:=P;P:=R;END{:132};
   654  P:=ROVER;
   655  WHILE MEM[P+1].HH.RH<>65535 DO BEGIN MEM[MEM[P+1].HH.RH+1].HH.LH:=P;
   656  P:=MEM[P+1].HH.RH;END;MEM[P+1].HH.RH:=ROVER;MEM[ROVER+1].HH.LH:=P;END;
   657  {:131}{136:}FUNCTION NEWNULLBOX:HALFWORD;VAR P:HALFWORD;
   658  BEGIN P:=GETNODE(7);MEM[P].HH.B0:=0;MEM[P].HH.B1:=0;MEM[P+1].INT:=0;
   659  MEM[P+2].INT:=0;MEM[P+3].INT:=0;MEM[P+4].INT:=0;MEM[P+5].HH.RH:=0;
   660  MEM[P+5].HH.B0:=0;MEM[P+5].HH.B1:=0;MEM[P+6].GR:=0.0;NEWNULLBOX:=P;END;
   661  {:136}{139:}FUNCTION NEWRULE:HALFWORD;VAR P:HALFWORD;
   662  BEGIN P:=GETNODE(4);MEM[P].HH.B0:=2;MEM[P].HH.B1:=0;
   663  MEM[P+1].INT:=-1073741824;MEM[P+2].INT:=-1073741824;
   664  MEM[P+3].INT:=-1073741824;NEWRULE:=P;END;
   665  {:139}{144:}FUNCTION NEWLIGATURE(F,C:QUARTERWORD;Q:HALFWORD):HALFWORD;
   666  VAR P:HALFWORD;BEGIN P:=GETNODE(2);MEM[P].HH.B0:=6;MEM[P+1].HH.B0:=F;
   667  MEM[P+1].HH.B1:=C;MEM[P+1].HH.RH:=Q;MEM[P].HH.B1:=0;NEWLIGATURE:=P;END;
   668  FUNCTION NEWLIGITEM(C:QUARTERWORD):HALFWORD;VAR P:HALFWORD;
   669  BEGIN P:=GETNODE(2);MEM[P].HH.B1:=C;MEM[P+1].HH.RH:=0;NEWLIGITEM:=P;END;
   670  {:144}{145:}FUNCTION NEWDISC:HALFWORD;VAR P:HALFWORD;
   671  BEGIN P:=GETNODE(2);MEM[P].HH.B0:=7;MEM[P].HH.B1:=0;MEM[P+1].HH.LH:=0;
   672  MEM[P+1].HH.RH:=0;NEWDISC:=P;END;{:145}{147:}FUNCTION NEWMATH(W:SCALED;
   673  S:SMALLNUMBER):HALFWORD;VAR P:HALFWORD;BEGIN P:=GETNODE(2);
   674  MEM[P].HH.B0:=9;MEM[P].HH.B1:=S;MEM[P+1].INT:=W;NEWMATH:=P;END;
   675  {:147}{151:}FUNCTION NEWSPEC(P:HALFWORD):HALFWORD;VAR Q:HALFWORD;
   676  BEGIN Q:=GETNODE(4);MEM[Q]:=MEM[P];MEM[Q].HH.RH:=0;
   677  MEM[Q+1].INT:=MEM[P+1].INT;MEM[Q+2].INT:=MEM[P+2].INT;
   678  MEM[Q+3].INT:=MEM[P+3].INT;NEWSPEC:=Q;END;
   679  {:151}{152:}FUNCTION NEWPARAMGLUE(N:SMALLNUMBER):HALFWORD;
   680  VAR P:HALFWORD;Q:HALFWORD;BEGIN P:=GETNODE(2);MEM[P].HH.B0:=10;
   681  MEM[P].HH.B1:=N+1;MEM[P+1].HH.RH:=0;Q:={224:}EQTB[2882+N].HH.RH{:224};
   682  MEM[P+1].HH.LH:=Q;MEM[Q].HH.RH:=MEM[Q].HH.RH+1;NEWPARAMGLUE:=P;END;
   683  {:152}{153:}FUNCTION NEWGLUE(Q:HALFWORD):HALFWORD;VAR P:HALFWORD;
   684  BEGIN P:=GETNODE(2);MEM[P].HH.B0:=10;MEM[P].HH.B1:=0;MEM[P+1].HH.RH:=0;
   685  MEM[P+1].HH.LH:=Q;MEM[Q].HH.RH:=MEM[Q].HH.RH+1;NEWGLUE:=P;END;
   686  {:153}{154:}FUNCTION NEWSKIPPARAM(N:SMALLNUMBER):HALFWORD;
   687  VAR P:HALFWORD;BEGIN TEMPPTR:=NEWSPEC({224:}EQTB[2882+N].HH.RH{:224});
   688  P:=NEWGLUE(TEMPPTR);MEM[TEMPPTR].HH.RH:=0;MEM[P].HH.B1:=N+1;
   689  NEWSKIPPARAM:=P;END;{:154}{156:}FUNCTION NEWKERN(W:SCALED):HALFWORD;
   690  VAR P:HALFWORD;BEGIN P:=GETNODE(2);MEM[P].HH.B0:=11;MEM[P].HH.B1:=0;
   691  MEM[P+1].INT:=W;NEWKERN:=P;END;
   692  {:156}{158:}FUNCTION NEWPENALTY(M:INTEGER):HALFWORD;VAR P:HALFWORD;
   693  BEGIN P:=GETNODE(2);MEM[P].HH.B0:=12;MEM[P].HH.B1:=0;MEM[P+1].INT:=M;
   694  NEWPENALTY:=P;END;{:158}{167:}{PROCEDURE CHECKMEM(PRINTLOCS:BOOLEAN);
   695  LABEL 31,32;VAR P,Q:HALFWORD;CLOBBERED:BOOLEAN;
   696  BEGIN FOR P:=MEMMIN TO LOMEMMAX DO FREE[P]:=FALSE;
   697  FOR P:=HIMEMMIN TO MEMEND DO FREE[P]:=FALSE;[168:]P:=AVAIL;Q:=0;
   698  CLOBBERED:=FALSE;
   699  WHILE P<>0 DO BEGIN IF(P>MEMEND)OR(P<HIMEMMIN)THEN CLOBBERED:=TRUE ELSE
   700  IF FREE[P]THEN CLOBBERED:=TRUE;IF CLOBBERED THEN BEGIN PRINTNL(301);
   701  PRINTINT(Q);GOTO 31;END;FREE[P]:=TRUE;Q:=P;P:=MEM[Q].HH.RH;END;
   702  31:[:168];[169:]P:=ROVER;Q:=0;CLOBBERED:=FALSE;
   703  REPEAT IF(P>=LOMEMMAX)OR(P<MEMMIN)THEN CLOBBERED:=TRUE ELSE IF(MEM[P+1].
   704  HH.RH>=LOMEMMAX)OR(MEM[P+1].HH.RH<MEMMIN)THEN CLOBBERED:=TRUE ELSE IF
   705  NOT((MEM[P].HH.RH=65535))OR(MEM[P].HH.LH<2)OR(P+MEM[P].HH.LH>LOMEMMAX)OR
   706  (MEM[MEM[P+1].HH.RH+1].HH.LH<>P)THEN CLOBBERED:=TRUE;
   707  IF CLOBBERED THEN BEGIN PRINTNL(302);PRINTINT(Q);GOTO 32;END;
   708  FOR Q:=P TO P+MEM[P].HH.LH-1 DO BEGIN IF FREE[Q]THEN BEGIN PRINTNL(303);
   709  PRINTINT(Q);GOTO 32;END;FREE[Q]:=TRUE;END;Q:=P;P:=MEM[P+1].HH.RH;
   710  UNTIL P=ROVER;32:[:169];[170:]P:=MEMMIN;
   711  WHILE P<=LOMEMMAX DO BEGIN IF(MEM[P].HH.RH=65535)THEN BEGIN PRINTNL(304)
   712  ;PRINTINT(P);END;WHILE(P<=LOMEMMAX)AND NOT FREE[P]DO P:=P+1;
   713  WHILE(P<=LOMEMMAX)AND FREE[P]DO P:=P+1;END[:170];
   714  IF PRINTLOCS THEN[171:]BEGIN PRINTNL(305);
   715  FOR P:=MEMMIN TO LOMEMMAX DO IF NOT FREE[P]AND((P>WASLOMAX)OR WASFREE[P]
   716  )THEN BEGIN PRINTCHAR(32);PRINTINT(P);END;
   717  FOR P:=HIMEMMIN TO MEMEND DO IF NOT FREE[P]AND((P<WASHIMIN)OR(P>
   718  WASMEMEND)OR WASFREE[P])THEN BEGIN PRINTCHAR(32);PRINTINT(P);END;
   719  END[:171];FOR P:=MEMMIN TO LOMEMMAX DO WASFREE[P]:=FREE[P];
   720  FOR P:=HIMEMMIN TO MEMEND DO WASFREE[P]:=FREE[P];WASMEMEND:=MEMEND;
   721  WASLOMAX:=LOMEMMAX;WASHIMIN:=HIMEMMIN;END;}
   722  {:167}{172:}{PROCEDURE SEARCHMEM(P:HALFWORD);VAR Q:INTEGER;
   723  BEGIN FOR Q:=MEMMIN TO LOMEMMAX DO BEGIN IF MEM[Q].HH.RH=P THEN BEGIN
   724  PRINTNL(306);PRINTINT(Q);PRINTCHAR(41);END;
   725  IF MEM[Q].HH.LH=P THEN BEGIN PRINTNL(307);PRINTINT(Q);PRINTCHAR(41);END;
   726  END;
   727  FOR Q:=HIMEMMIN TO MEMEND DO BEGIN IF MEM[Q].HH.RH=P THEN BEGIN PRINTNL(
   728  306);PRINTINT(Q);PRINTCHAR(41);END;
   729  IF MEM[Q].HH.LH=P THEN BEGIN PRINTNL(307);PRINTINT(Q);PRINTCHAR(41);END;
   730  END;
   731  [255:]FOR Q:=1 TO 3933 DO BEGIN IF EQTB[Q].HH.RH=P THEN BEGIN PRINTNL(
   732  501);PRINTINT(Q);PRINTCHAR(41);END;END[:255];
   733  [285:]IF SAVEPTR>0 THEN FOR Q:=0 TO SAVEPTR-1 DO BEGIN IF SAVESTACK[Q].
   734  HH.RH=P THEN BEGIN PRINTNL(546);PRINTINT(Q);PRINTCHAR(41);END;END[:285];
   735  [933:]FOR Q:=0 TO 307 DO BEGIN IF HYPHLIST[Q]=P THEN BEGIN PRINTNL(940);
   736  PRINTINT(Q);PRINTCHAR(41);END;END[:933];END;}
   737  {:172}{174:}PROCEDURE SHORTDISPLAY(P:INTEGER);VAR N:INTEGER;
   738  BEGIN WHILE P>MEMMIN DO BEGIN IF(P>=HIMEMMIN)THEN BEGIN IF P<=MEMEND
   739  THEN BEGIN IF MEM[P].HH.B0<>FONTINSHORTDISPLAY THEN BEGIN IF(MEM[P].HH.
   740  B0<0)OR(MEM[P].HH.B0>FONTMAX)THEN PRINTCHAR(42)ELSE{267:}PRINTESC(HASH[
   741  2624+MEM[P].HH.B0].RH){:267};PRINTCHAR(32);
   742  FONTINSHORTDISPLAY:=MEM[P].HH.B0;END;PRINT(MEM[P].HH.B1-0);END;
   743  END ELSE{175:}CASE MEM[P].HH.B0 OF 0,1,3,8,4,5,13:PRINT(308);
   744  2:PRINTCHAR(124);10:IF MEM[P+1].HH.LH<>0 THEN PRINTCHAR(32);
   745  9:PRINTCHAR(36);6:SHORTDISPLAY(MEM[P+1].HH.RH);
   746  7:BEGIN SHORTDISPLAY(MEM[P+1].HH.LH);SHORTDISPLAY(MEM[P+1].HH.RH);
   747  N:=MEM[P].HH.B1;
   748  WHILE N>0 DO BEGIN IF MEM[P].HH.RH<>0 THEN P:=MEM[P].HH.RH;N:=N-1;END;
   749  END;ELSE END{:175};P:=MEM[P].HH.RH;END;END;
   750  {:174}{176:}PROCEDURE PRINTFONTANDCHAR(P:INTEGER);
   751  BEGIN IF P>MEMEND THEN PRINTESC(309)ELSE BEGIN IF(MEM[P].HH.B0<0)OR(MEM[
   752  P].HH.B0>FONTMAX)THEN PRINTCHAR(42)ELSE{267:}PRINTESC(HASH[2624+MEM[P].
   753  HH.B0].RH){:267};PRINTCHAR(32);PRINT(MEM[P].HH.B1-0);END;END;
   754  PROCEDURE PRINTMARK(P:INTEGER);BEGIN PRINTCHAR(123);
   755  IF(P<HIMEMMIN)OR(P>MEMEND)THEN PRINTESC(309)ELSE SHOWTOKENLIST(MEM[P].HH
   756  .RH,0,MAXPRINTLINE-10);PRINTCHAR(125);END;
   757  PROCEDURE PRINTRULEDIMEN(D:SCALED);
   758  BEGIN IF(D=-1073741824)THEN PRINTCHAR(42)ELSE PRINTSCALED(D);END;
   759  {:176}{177:}PROCEDURE PRINTGLUE(D:SCALED;ORDER:INTEGER;S:STRNUMBER);
   760  BEGIN PRINTSCALED(D);
   761  IF(ORDER<0)OR(ORDER>3)THEN PRINT(310)ELSE IF ORDER>0 THEN BEGIN PRINT(
   762  311);WHILE ORDER>1 DO BEGIN PRINTCHAR(108);ORDER:=ORDER-1;END;
   763  END ELSE IF S<>0 THEN PRINT(S);END;
   764  {:177}{178:}PROCEDURE PRINTSPEC(P:INTEGER;S:STRNUMBER);
   765  BEGIN IF(P<MEMMIN)OR(P>=LOMEMMAX)THEN PRINTCHAR(42)ELSE BEGIN
   766  PRINTSCALED(MEM[P+1].INT);IF S<>0 THEN PRINT(S);
   767  IF MEM[P+2].INT<>0 THEN BEGIN PRINT(312);
   768  PRINTGLUE(MEM[P+2].INT,MEM[P].HH.B0,S);END;
   769  IF MEM[P+3].INT<>0 THEN BEGIN PRINT(313);
   770  PRINTGLUE(MEM[P+3].INT,MEM[P].HH.B1,S);END;END;END;
   771  {:178}{179:}{691:}PROCEDURE PRINTFAMANDCHAR(P:HALFWORD);
   772  BEGIN PRINTESC(464);PRINTINT(MEM[P].HH.B0);PRINTCHAR(32);
   773  PRINT(MEM[P].HH.B1-0);END;PROCEDURE PRINTDELIMITER(P:HALFWORD);
   774  VAR A:INTEGER;BEGIN A:=MEM[P].QQQQ.B0*256+MEM[P].QQQQ.B1-0;
   775  A:=A*4096+MEM[P].QQQQ.B2*256+MEM[P].QQQQ.B3-0;
   776  IF A<0 THEN PRINTINT(A)ELSE PRINTHEX(A);END;
   777  {:691}{692:}PROCEDURE SHOWINFO;FORWARD;
   778  PROCEDURE PRINTSUBSIDIARYDATA(P:HALFWORD;C:ASCIICODE);
   779  BEGIN IF(POOLPTR-STRSTART[STRPTR])>=DEPTHTHRESHOLD THEN BEGIN IF MEM[P].
   780  HH.RH<>0 THEN PRINT(314);END ELSE BEGIN BEGIN STRPOOL[POOLPTR]:=C;
   781  POOLPTR:=POOLPTR+1;END;TEMPPTR:=P;CASE MEM[P].HH.RH OF 1:BEGIN PRINTLN;
   782  PRINTCURRENTSTRING;PRINTFAMANDCHAR(P);END;2:SHOWINFO;
   783  3:IF MEM[P].HH.LH=0 THEN BEGIN PRINTLN;PRINTCURRENTSTRING;PRINT(860);
   784  END ELSE SHOWINFO;ELSE END;POOLPTR:=POOLPTR-1;END;END;
   785  {:692}{694:}PROCEDURE PRINTSTYLE(C:INTEGER);
   786  BEGIN CASE C DIV 2 OF 0:PRINTESC(861);1:PRINTESC(862);2:PRINTESC(863);
   787  3:PRINTESC(864);ELSE PRINT(865)END;END;
   788  {:694}{225:}PROCEDURE PRINTSKIPPARAM(N:INTEGER);
   789  BEGIN CASE N OF 0:PRINTESC(376);1:PRINTESC(377);2:PRINTESC(378);
   790  3:PRINTESC(379);4:PRINTESC(380);5:PRINTESC(381);6:PRINTESC(382);
   791  7:PRINTESC(383);8:PRINTESC(384);9:PRINTESC(385);10:PRINTESC(386);
   792  11:PRINTESC(387);12:PRINTESC(388);13:PRINTESC(389);14:PRINTESC(390);
   793  15:PRINTESC(391);16:PRINTESC(392);17:PRINTESC(393);ELSE PRINT(394)END;
   794  END;{:225}{:179}{182:}PROCEDURE SHOWNODELIST(P:INTEGER);LABEL 10;
   795  VAR N:INTEGER;G:REAL;
   796  BEGIN IF(POOLPTR-STRSTART[STRPTR])>DEPTHTHRESHOLD THEN BEGIN IF P>0 THEN
   797  PRINT(314);GOTO 10;END;N:=0;WHILE P>MEMMIN DO BEGIN PRINTLN;
   798  PRINTCURRENTSTRING;IF P>MEMEND THEN BEGIN PRINT(315);GOTO 10;END;N:=N+1;
   799  IF N>BREADTHMAX THEN BEGIN PRINT(316);GOTO 10;END;
   800  {183:}IF(P>=HIMEMMIN)THEN PRINTFONTANDCHAR(P)ELSE CASE MEM[P].HH.B0 OF 0
   801  ,1,13:{184:}BEGIN IF MEM[P].HH.B0=0 THEN PRINTESC(104)ELSE IF MEM[P].HH.
   802  B0=1 THEN PRINTESC(118)ELSE PRINTESC(318);PRINT(319);
   803  PRINTSCALED(MEM[P+3].INT);PRINTCHAR(43);PRINTSCALED(MEM[P+2].INT);
   804  PRINT(320);PRINTSCALED(MEM[P+1].INT);
   805  IF MEM[P].HH.B0=13 THEN{185:}BEGIN IF MEM[P].HH.B1<>0 THEN BEGIN PRINT(
   806  286);PRINTINT(MEM[P].HH.B1+1);PRINT(322);END;
   807  IF MEM[P+6].INT<>0 THEN BEGIN PRINT(323);
   808  PRINTGLUE(MEM[P+6].INT,MEM[P+5].HH.B1,0);END;
   809  IF MEM[P+4].INT<>0 THEN BEGIN PRINT(324);
   810  PRINTGLUE(MEM[P+4].INT,MEM[P+5].HH.B0,0);END;
   811  END{:185}ELSE BEGIN{186:}G:=MEM[P+6].GR;
   812  IF(G<>0.0)AND(MEM[P+5].HH.B0<>0)THEN BEGIN PRINT(325);
   813  IF MEM[P+5].HH.B0=2 THEN PRINT(326);
   814  IF ABS(MEM[P+6].INT)<1048576 THEN PRINT(327)ELSE IF ABS(G)>20000.0 THEN
   815  BEGIN IF G>0.0 THEN PRINTCHAR(62)ELSE PRINT(328);
   816  PRINTGLUE(20000*65536,MEM[P+5].HH.B1,0);
   817  END ELSE PRINTGLUE(ROUND(65536*G),MEM[P+5].HH.B1,0);END{:186};
   818  IF MEM[P+4].INT<>0 THEN BEGIN PRINT(321);PRINTSCALED(MEM[P+4].INT);END;
   819  END;BEGIN BEGIN STRPOOL[POOLPTR]:=46;POOLPTR:=POOLPTR+1;END;
   820  SHOWNODELIST(MEM[P+5].HH.RH);POOLPTR:=POOLPTR-1;END;END{:184};
   821  2:{187:}BEGIN PRINTESC(329);PRINTRULEDIMEN(MEM[P+3].INT);PRINTCHAR(43);
   822  PRINTRULEDIMEN(MEM[P+2].INT);PRINT(320);PRINTRULEDIMEN(MEM[P+1].INT);
   823  END{:187};3:{188:}BEGIN PRINTESC(330);PRINTINT(MEM[P].HH.B1-0);
   824  PRINT(331);PRINTSCALED(MEM[P+3].INT);PRINT(332);
   825  PRINTSPEC(MEM[P+4].HH.RH,0);PRINTCHAR(44);PRINTSCALED(MEM[P+2].INT);
   826  PRINT(333);PRINTINT(MEM[P+1].INT);BEGIN BEGIN STRPOOL[POOLPTR]:=46;
   827  POOLPTR:=POOLPTR+1;END;SHOWNODELIST(MEM[P+4].HH.LH);POOLPTR:=POOLPTR-1;
   828  END;END{:188};
   829  8:{1356:}CASE MEM[P].HH.B1 OF 0:BEGIN PRINTWRITEWHATSIT(1285,P);
   830  PRINTCHAR(61);
   831  PRINTFILENAME(MEM[P+1].HH.RH,MEM[P+2].HH.LH,MEM[P+2].HH.RH);END;
   832  1:BEGIN PRINTWRITEWHATSIT(594,P);PRINTMARK(MEM[P+1].HH.RH);END;
   833  2:PRINTWRITEWHATSIT(1286,P);3:BEGIN PRINTESC(1287);
   834  PRINTMARK(MEM[P+1].HH.RH);END;4:BEGIN PRINTESC(1289);
   835  PRINTINT(MEM[P+1].HH.RH);PRINT(1292);PRINTINT(MEM[P+1].HH.B0);
   836  PRINTCHAR(44);PRINTINT(MEM[P+1].HH.B1);PRINTCHAR(41);END;
   837  ELSE PRINT(1293)END{:1356};
   838  10:{189:}IF MEM[P].HH.B1>=100 THEN{190:}BEGIN PRINTESC(338);
   839  IF MEM[P].HH.B1=101 THEN PRINTCHAR(99)ELSE IF MEM[P].HH.B1=102 THEN
   840  PRINTCHAR(120);PRINT(339);PRINTSPEC(MEM[P+1].HH.LH,0);
   841  BEGIN BEGIN STRPOOL[POOLPTR]:=46;POOLPTR:=POOLPTR+1;END;
   842  SHOWNODELIST(MEM[P+1].HH.RH);POOLPTR:=POOLPTR-1;END;
   843  END{:190}ELSE BEGIN PRINTESC(334);
   844  IF MEM[P].HH.B1<>0 THEN BEGIN PRINTCHAR(40);
   845  IF MEM[P].HH.B1<98 THEN PRINTSKIPPARAM(MEM[P].HH.B1-1)ELSE IF MEM[P].HH.
   846  B1=98 THEN PRINTESC(335)ELSE PRINTESC(336);PRINTCHAR(41);END;
   847  IF MEM[P].HH.B1<>98 THEN BEGIN PRINTCHAR(32);
   848  IF MEM[P].HH.B1<98 THEN PRINTSPEC(MEM[P+1].HH.LH,0)ELSE PRINTSPEC(MEM[P
   849  +1].HH.LH,337);END;END{:189};
   850  11:{191:}IF MEM[P].HH.B1<>99 THEN BEGIN PRINTESC(340);
   851  IF MEM[P].HH.B1<>0 THEN PRINTCHAR(32);PRINTSCALED(MEM[P+1].INT);
   852  IF MEM[P].HH.B1=2 THEN PRINT(341);END ELSE BEGIN PRINTESC(342);
   853  PRINTSCALED(MEM[P+1].INT);PRINT(337);END{:191};
   854  9:{192:}BEGIN PRINTESC(343);
   855  IF MEM[P].HH.B1=0 THEN PRINT(344)ELSE PRINT(345);
   856  IF MEM[P+1].INT<>0 THEN BEGIN PRINT(346);PRINTSCALED(MEM[P+1].INT);END;
   857  END{:192};6:{193:}BEGIN PRINTFONTANDCHAR(P+1);PRINT(347);
   858  IF MEM[P].HH.B1>1 THEN PRINTCHAR(124);
   859  FONTINSHORTDISPLAY:=MEM[P+1].HH.B0;SHORTDISPLAY(MEM[P+1].HH.RH);
   860  IF ODD(MEM[P].HH.B1)THEN PRINTCHAR(124);PRINTCHAR(41);END{:193};
   861  12:{194:}BEGIN PRINTESC(348);PRINTINT(MEM[P+1].INT);END{:194};
   862  7:{195:}BEGIN PRINTESC(349);IF MEM[P].HH.B1>0 THEN BEGIN PRINT(350);
   863  PRINTINT(MEM[P].HH.B1);END;BEGIN BEGIN STRPOOL[POOLPTR]:=46;
   864  POOLPTR:=POOLPTR+1;END;SHOWNODELIST(MEM[P+1].HH.LH);POOLPTR:=POOLPTR-1;
   865  END;BEGIN STRPOOL[POOLPTR]:=124;POOLPTR:=POOLPTR+1;END;
   866  SHOWNODELIST(MEM[P+1].HH.RH);POOLPTR:=POOLPTR-1;END{:195};
   867  4:{196:}BEGIN PRINTESC(351);PRINTMARK(MEM[P+1].INT);END{:196};
   868  5:{197:}BEGIN PRINTESC(352);BEGIN BEGIN STRPOOL[POOLPTR]:=46;
   869  POOLPTR:=POOLPTR+1;END;SHOWNODELIST(MEM[P+1].INT);POOLPTR:=POOLPTR-1;
   870  END;END{:197};{690:}14:PRINTSTYLE(MEM[P].HH.B1);
   871  15:{695:}BEGIN PRINTESC(525);BEGIN STRPOOL[POOLPTR]:=68;
   872  POOLPTR:=POOLPTR+1;END;SHOWNODELIST(MEM[P+1].HH.LH);POOLPTR:=POOLPTR-1;
   873  BEGIN STRPOOL[POOLPTR]:=84;POOLPTR:=POOLPTR+1;END;
   874  SHOWNODELIST(MEM[P+1].HH.RH);POOLPTR:=POOLPTR-1;
   875  BEGIN STRPOOL[POOLPTR]:=83;POOLPTR:=POOLPTR+1;END;
   876  SHOWNODELIST(MEM[P+2].HH.LH);POOLPTR:=POOLPTR-1;
   877  BEGIN STRPOOL[POOLPTR]:=115;POOLPTR:=POOLPTR+1;END;
   878  SHOWNODELIST(MEM[P+2].HH.RH);POOLPTR:=POOLPTR-1;END{:695};
   879  16,17,18,19,20,21,22,23,24,27,26,29,28,30,31:{696:}BEGIN CASE MEM[P].HH.
   880  B0 OF 16:PRINTESC(866);17:PRINTESC(867);18:PRINTESC(868);
   881  19:PRINTESC(869);20:PRINTESC(870);21:PRINTESC(871);22:PRINTESC(872);
   882  23:PRINTESC(873);27:PRINTESC(874);26:PRINTESC(875);29:PRINTESC(539);
   883  24:BEGIN PRINTESC(533);PRINTDELIMITER(P+4);END;28:BEGIN PRINTESC(508);
   884  PRINTFAMANDCHAR(P+4);END;30:BEGIN PRINTESC(876);PRINTDELIMITER(P+1);END;
   885  31:BEGIN PRINTESC(877);PRINTDELIMITER(P+1);END;END;
   886  IF MEM[P].HH.B1<>0 THEN IF MEM[P].HH.B1=1 THEN PRINTESC(878)ELSE
   887  PRINTESC(879);IF MEM[P].HH.B0<30 THEN PRINTSUBSIDIARYDATA(P+1,46);
   888  PRINTSUBSIDIARYDATA(P+2,94);PRINTSUBSIDIARYDATA(P+3,95);END{:696};
   889  25:{697:}BEGIN PRINTESC(880);
   890  IF MEM[P+1].INT=1073741824 THEN PRINT(881)ELSE PRINTSCALED(MEM[P+1].INT)
   891  ;
   892  IF(MEM[P+4].QQQQ.B0<>0)OR(MEM[P+4].QQQQ.B1<>0)OR(MEM[P+4].QQQQ.B2<>0)OR(
   893  MEM[P+4].QQQQ.B3<>0)THEN BEGIN PRINT(882);PRINTDELIMITER(P+4);END;
   894  IF(MEM[P+5].QQQQ.B0<>0)OR(MEM[P+5].QQQQ.B1<>0)OR(MEM[P+5].QQQQ.B2<>0)OR(
   895  MEM[P+5].QQQQ.B3<>0)THEN BEGIN PRINT(883);PRINTDELIMITER(P+5);END;
   896  PRINTSUBSIDIARYDATA(P+2,92);PRINTSUBSIDIARYDATA(P+3,47);END{:697};
   897  {:690}ELSE PRINT(317)END{:183};P:=MEM[P].HH.RH;END;10:END;
   898  {:182}{198:}PROCEDURE SHOWBOX(P:HALFWORD);
   899  BEGIN{236:}DEPTHTHRESHOLD:=EQTB[5288].INT;
   900  BREADTHMAX:=EQTB[5287].INT{:236};IF BREADTHMAX<=0 THEN BREADTHMAX:=5;
   901  IF POOLPTR+DEPTHTHRESHOLD>=POOLSIZE THEN DEPTHTHRESHOLD:=POOLSIZE-
   902  POOLPTR-1;SHOWNODELIST(P);PRINTLN;END;
   903  {:198}{200:}PROCEDURE DELETETOKENREF(P:HALFWORD);
   904  BEGIN IF MEM[P].HH.LH=0 THEN FLUSHLIST(P)ELSE MEM[P].HH.LH:=MEM[P].HH.LH
   905  -1;END;{:200}{201:}PROCEDURE DELETEGLUEREF(P:HALFWORD);
   906  BEGIN IF MEM[P].HH.RH=0 THEN FREENODE(P,4)ELSE MEM[P].HH.RH:=MEM[P].HH.
   907  RH-1;END;{:201}{202:}PROCEDURE FLUSHNODELIST(P:HALFWORD);LABEL 30;
   908  VAR Q:HALFWORD;BEGIN WHILE P<>0 DO BEGIN Q:=MEM[P].HH.RH;
   909  IF(P>=HIMEMMIN)THEN BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;
   910  {DYNUSED:=DYNUSED-1;}
   911  END ELSE BEGIN CASE MEM[P].HH.B0 OF 0,1,13:BEGIN FLUSHNODELIST(MEM[P+5].
   912  HH.RH);FREENODE(P,7);GOTO 30;END;2:BEGIN FREENODE(P,4);GOTO 30;END;
   913  3:BEGIN FLUSHNODELIST(MEM[P+4].HH.LH);DELETEGLUEREF(MEM[P+4].HH.RH);
   914  FREENODE(P,5);GOTO 30;END;
   915  8:{1358:}BEGIN CASE MEM[P].HH.B1 OF 0:FREENODE(P,3);
   916  1,3:BEGIN DELETETOKENREF(MEM[P+1].HH.RH);FREENODE(P,2);GOTO 30;END;
   917  2,4:FREENODE(P,2);ELSE CONFUSION(1295)END;GOTO 30;END{:1358};
   918  10:BEGIN BEGIN IF MEM[MEM[P+1].HH.LH].HH.RH=0 THEN FREENODE(MEM[P+1].HH.
   919  LH,4)ELSE MEM[MEM[P+1].HH.LH].HH.RH:=MEM[MEM[P+1].HH.LH].HH.RH-1;END;
   920  IF MEM[P+1].HH.RH<>0 THEN FLUSHNODELIST(MEM[P+1].HH.RH);END;11,9,12:;
   921  6:FLUSHNODELIST(MEM[P+1].HH.RH);4:DELETETOKENREF(MEM[P+1].INT);
   922  7:BEGIN FLUSHNODELIST(MEM[P+1].HH.LH);FLUSHNODELIST(MEM[P+1].HH.RH);END;
   923  5:FLUSHNODELIST(MEM[P+1].INT);{698:}14:BEGIN FREENODE(P,3);GOTO 30;END;
   924  15:BEGIN FLUSHNODELIST(MEM[P+1].HH.LH);FLUSHNODELIST(MEM[P+1].HH.RH);
   925  FLUSHNODELIST(MEM[P+2].HH.LH);FLUSHNODELIST(MEM[P+2].HH.RH);
   926  FREENODE(P,3);GOTO 30;END;
   927  16,17,18,19,20,21,22,23,24,27,26,29,28:BEGIN IF MEM[P+1].HH.RH>=2 THEN
   928  FLUSHNODELIST(MEM[P+1].HH.LH);
   929  IF MEM[P+2].HH.RH>=2 THEN FLUSHNODELIST(MEM[P+2].HH.LH);
   930  IF MEM[P+3].HH.RH>=2 THEN FLUSHNODELIST(MEM[P+3].HH.LH);
   931  IF MEM[P].HH.B0=24 THEN FREENODE(P,5)ELSE IF MEM[P].HH.B0=28 THEN
   932  FREENODE(P,5)ELSE FREENODE(P,4);GOTO 30;END;30,31:BEGIN FREENODE(P,4);
   933  GOTO 30;END;25:BEGIN FLUSHNODELIST(MEM[P+2].HH.LH);
   934  FLUSHNODELIST(MEM[P+3].HH.LH);FREENODE(P,6);GOTO 30;END;
   935  {:698}ELSE CONFUSION(353)END;FREENODE(P,2);30:END;P:=Q;END;END;
   936  {:202}{204:}FUNCTION COPYNODELIST(P:HALFWORD):HALFWORD;VAR H:HALFWORD;
   937  Q:HALFWORD;R:HALFWORD;WORDS:0..5;BEGIN H:=GETAVAIL;Q:=H;
   938  WHILE P<>0 DO BEGIN{205:}WORDS:=1;
   939  IF(P>=HIMEMMIN)THEN R:=GETAVAIL ELSE{206:}CASE MEM[P].HH.B0 OF 0,1,13:
   940  BEGIN R:=GETNODE(7);MEM[R+6]:=MEM[P+6];MEM[R+5]:=MEM[P+5];
   941  MEM[R+5].HH.RH:=COPYNODELIST(MEM[P+5].HH.RH);WORDS:=5;END;
   942  2:BEGIN R:=GETNODE(4);WORDS:=4;END;3:BEGIN R:=GETNODE(5);
   943  MEM[R+4]:=MEM[P+4];
   944  MEM[MEM[P+4].HH.RH].HH.RH:=MEM[MEM[P+4].HH.RH].HH.RH+1;
   945  MEM[R+4].HH.LH:=COPYNODELIST(MEM[P+4].HH.LH);WORDS:=4;END;
   946  8:{1357:}CASE MEM[P].HH.B1 OF 0:BEGIN R:=GETNODE(3);WORDS:=3;END;
   947  1,3:BEGIN R:=GETNODE(2);
   948  MEM[MEM[P+1].HH.RH].HH.LH:=MEM[MEM[P+1].HH.RH].HH.LH+1;WORDS:=2;END;
   949  2,4:BEGIN R:=GETNODE(2);WORDS:=2;END;ELSE CONFUSION(1294)END{:1357};
   950  10:BEGIN R:=GETNODE(2);
   951  MEM[MEM[P+1].HH.LH].HH.RH:=MEM[MEM[P+1].HH.LH].HH.RH+1;
   952  MEM[R+1].HH.LH:=MEM[P+1].HH.LH;
   953  MEM[R+1].HH.RH:=COPYNODELIST(MEM[P+1].HH.RH);END;
   954  11,9,12:BEGIN R:=GETNODE(2);WORDS:=2;END;6:BEGIN R:=GETNODE(2);
   955  MEM[R+1]:=MEM[P+1];MEM[R+1].HH.RH:=COPYNODELIST(MEM[P+1].HH.RH);END;
   956  7:BEGIN R:=GETNODE(2);MEM[R+1].HH.LH:=COPYNODELIST(MEM[P+1].HH.LH);
   957  MEM[R+1].HH.RH:=COPYNODELIST(MEM[P+1].HH.RH);END;4:BEGIN R:=GETNODE(2);
   958  MEM[MEM[P+1].INT].HH.LH:=MEM[MEM[P+1].INT].HH.LH+1;WORDS:=2;END;
   959  5:BEGIN R:=GETNODE(2);MEM[R+1].INT:=COPYNODELIST(MEM[P+1].INT);END;
   960  ELSE CONFUSION(354)END{:206};WHILE WORDS>0 DO BEGIN WORDS:=WORDS-1;
   961  MEM[R+WORDS]:=MEM[P+WORDS];END{:205};MEM[Q].HH.RH:=R;Q:=R;
   962  P:=MEM[P].HH.RH;END;MEM[Q].HH.RH:=0;Q:=MEM[H].HH.RH;
   963  BEGIN MEM[H].HH.RH:=AVAIL;AVAIL:=H;{DYNUSED:=DYNUSED-1;}END;
   964  COPYNODELIST:=Q;END;{:204}{211:}PROCEDURE PRINTMODE(M:INTEGER);
   965  BEGIN IF M>0 THEN CASE M DIV(101)OF 0:PRINT(355);1:PRINT(356);
   966  2:PRINT(357);
   967  END ELSE IF M=0 THEN PRINT(358)ELSE CASE(-M)DIV(101)OF 0:PRINT(359);
   968  1:PRINT(360);2:PRINT(343);END;PRINT(361);END;
   969  {:211}{216:}PROCEDURE PUSHNEST;
   970  BEGIN IF NESTPTR>MAXNESTSTACK THEN BEGIN MAXNESTSTACK:=NESTPTR;
   971  IF NESTPTR=NESTSIZE THEN OVERFLOW(362,NESTSIZE);END;
   972  NEST[NESTPTR]:=CURLIST;NESTPTR:=NESTPTR+1;CURLIST.HEADFIELD:=GETAVAIL;
   973  CURLIST.TAILFIELD:=CURLIST.HEADFIELD;CURLIST.PGFIELD:=0;
   974  CURLIST.MLFIELD:=LINE;END;{:216}{217:}PROCEDURE POPNEST;
   975  BEGIN BEGIN MEM[CURLIST.HEADFIELD].HH.RH:=AVAIL;
   976  AVAIL:=CURLIST.HEADFIELD;{DYNUSED:=DYNUSED-1;}END;NESTPTR:=NESTPTR-1;
   977  CURLIST:=NEST[NESTPTR];END;{:217}{218:}PROCEDURE PRINTTOTALS;FORWARD;
   978  PROCEDURE SHOWACTIVITIES;VAR P:0..NESTSIZE;M:-203..203;A:MEMORYWORD;
   979  Q,R:HALFWORD;T:INTEGER;BEGIN NEST[NESTPTR]:=CURLIST;PRINTNL(338);
   980  PRINTLN;FOR P:=NESTPTR DOWNTO 0 DO BEGIN M:=NEST[P].MODEFIELD;
   981  A:=NEST[P].AUXFIELD;PRINTNL(363);PRINTMODE(M);PRINT(364);
   982  PRINTINT(ABS(NEST[P].MLFIELD));
   983  IF M=102 THEN IF NEST[P].PGFIELD<>8585216 THEN BEGIN PRINT(365);
   984  PRINTINT(NEST[P].PGFIELD MOD 65536);PRINT(366);
   985  PRINTINT(NEST[P].PGFIELD DIV 4194304);PRINTCHAR(44);
   986  PRINTINT((NEST[P].PGFIELD DIV 65536)MOD 64);PRINTCHAR(41);END;
   987  IF NEST[P].MLFIELD<0 THEN PRINT(367);
   988  IF P=0 THEN BEGIN{986:}IF 29998<>PAGETAIL THEN BEGIN PRINTNL(980);
   989  IF OUTPUTACTIVE THEN PRINT(981);SHOWBOX(MEM[29998].HH.RH);
   990  IF PAGECONTENTS>0 THEN BEGIN PRINTNL(982);PRINTTOTALS;PRINTNL(983);
   991  PRINTSCALED(PAGESOFAR[0]);R:=MEM[30000].HH.RH;
   992  WHILE R<>30000 DO BEGIN PRINTLN;PRINTESC(330);T:=MEM[R].HH.B1-0;
   993  PRINTINT(T);PRINT(984);
   994  IF EQTB[5318+T].INT=1000 THEN T:=MEM[R+3].INT ELSE T:=XOVERN(MEM[R+3].
   995  INT,1000)*EQTB[5318+T].INT;PRINTSCALED(T);
   996  IF MEM[R].HH.B0=1 THEN BEGIN Q:=29998;T:=0;REPEAT Q:=MEM[Q].HH.RH;
   997  IF(MEM[Q].HH.B0=3)AND(MEM[Q].HH.B1=MEM[R].HH.B1)THEN T:=T+1;
   998  UNTIL Q=MEM[R+1].HH.LH;PRINT(985);PRINTINT(T);PRINT(986);END;
   999  R:=MEM[R].HH.RH;END;END;END{:986};
  1000  IF MEM[29999].HH.RH<>0 THEN PRINTNL(368);END;
  1001  SHOWBOX(MEM[NEST[P].HEADFIELD].HH.RH);
  1002  {219:}CASE ABS(M)DIV(101)OF 0:BEGIN PRINTNL(369);
  1003  IF A.INT<=-65536000 THEN PRINT(370)ELSE PRINTSCALED(A.INT);
  1004  IF NEST[P].PGFIELD<>0 THEN BEGIN PRINT(371);PRINTINT(NEST[P].PGFIELD);
  1005  PRINT(372);IF NEST[P].PGFIELD<>1 THEN PRINTCHAR(115);END;END;
  1006  1:BEGIN PRINTNL(373);PRINTINT(A.HH.LH);
  1007  IF M>0 THEN IF A.HH.RH>0 THEN BEGIN PRINT(374);PRINTINT(A.HH.RH);END;
  1008  END;2:IF A.INT<>0 THEN BEGIN PRINT(375);SHOWBOX(A.INT);END;END{:219};
  1009  END;END;{:218}{237:}PROCEDURE PRINTPARAM(N:INTEGER);
  1010  BEGIN CASE N OF 0:PRINTESC(420);1:PRINTESC(421);2:PRINTESC(422);
  1011  3:PRINTESC(423);4:PRINTESC(424);5:PRINTESC(425);6:PRINTESC(426);
  1012  7:PRINTESC(427);8:PRINTESC(428);9:PRINTESC(429);10:PRINTESC(430);
  1013  11:PRINTESC(431);12:PRINTESC(432);13:PRINTESC(433);14:PRINTESC(434);
  1014  15:PRINTESC(435);16:PRINTESC(436);17:PRINTESC(437);18:PRINTESC(438);
  1015  19:PRINTESC(439);20:PRINTESC(440);21:PRINTESC(441);22:PRINTESC(442);
  1016  23:PRINTESC(443);24:PRINTESC(444);25:PRINTESC(445);26:PRINTESC(446);
  1017  27:PRINTESC(447);28:PRINTESC(448);29:PRINTESC(449);30:PRINTESC(450);
  1018  31:PRINTESC(451);32:PRINTESC(452);33:PRINTESC(453);34:PRINTESC(454);
  1019  35:PRINTESC(455);36:PRINTESC(456);37:PRINTESC(457);38:PRINTESC(458);
  1020  39:PRINTESC(459);40:PRINTESC(460);41:PRINTESC(461);42:PRINTESC(462);
  1021  43:PRINTESC(463);44:PRINTESC(464);45:PRINTESC(465);46:PRINTESC(466);
  1022  47:PRINTESC(467);48:PRINTESC(468);49:PRINTESC(469);50:PRINTESC(470);
  1023  51:PRINTESC(471);52:PRINTESC(472);53:PRINTESC(473);54:PRINTESC(474);
  1024  ELSE PRINT(475)END;END;{:237}{241:}PROCEDURE FIXDATEANDTIME;
  1025  BEGIN SYSTIME:=12*60;SYSDAY:=4;SYSMONTH:=7;SYSYEAR:=1776;
  1026  EQTB[5283].INT:=SYSTIME;EQTB[5284].INT:=SYSDAY;EQTB[5285].INT:=SYSMONTH;
  1027  EQTB[5286].INT:=SYSYEAR;END;{:241}{245:}PROCEDURE BEGINDIAGNOSTIC;
  1028  BEGIN OLDSETTING:=SELECTOR;
  1029  IF(EQTB[5292].INT<=0)AND(SELECTOR=19)THEN BEGIN SELECTOR:=SELECTOR-1;
  1030  IF HISTORY=0 THEN HISTORY:=1;END;END;
  1031  PROCEDURE ENDDIAGNOSTIC(BLANKLINE:BOOLEAN);BEGIN PRINTNL(338);
  1032  IF BLANKLINE THEN PRINTLN;SELECTOR:=OLDSETTING;END;
  1033  {:245}{247:}PROCEDURE PRINTLENGTHPARAM(N:INTEGER);
  1034  BEGIN CASE N OF 0:PRINTESC(478);1:PRINTESC(479);2:PRINTESC(480);
  1035  3:PRINTESC(481);4:PRINTESC(482);5:PRINTESC(483);6:PRINTESC(484);
  1036  7:PRINTESC(485);8:PRINTESC(486);9:PRINTESC(487);10:PRINTESC(488);
  1037  11:PRINTESC(489);12:PRINTESC(490);13:PRINTESC(491);14:PRINTESC(492);
  1038  15:PRINTESC(493);16:PRINTESC(494);17:PRINTESC(495);18:PRINTESC(496);
  1039  19:PRINTESC(497);20:PRINTESC(498);ELSE PRINT(499)END;END;
  1040  {:247}{252:}{298:}PROCEDURE PRINTCMDCHR(CMD:QUARTERWORD;
  1041  CHRCODE:HALFWORD);BEGIN CASE CMD OF 1:BEGIN PRINT(557);PRINT(CHRCODE);
  1042  END;2:BEGIN PRINT(558);PRINT(CHRCODE);END;3:BEGIN PRINT(559);
  1043  PRINT(CHRCODE);END;6:BEGIN PRINT(560);PRINT(CHRCODE);END;
  1044  7:BEGIN PRINT(561);PRINT(CHRCODE);END;8:BEGIN PRINT(562);PRINT(CHRCODE);
  1045  END;9:PRINT(563);10:BEGIN PRINT(564);PRINT(CHRCODE);END;
  1046  11:BEGIN PRINT(565);PRINT(CHRCODE);END;12:BEGIN PRINT(566);
  1047  PRINT(CHRCODE);END;
  1048  {227:}75,76:IF CHRCODE<2900 THEN PRINTSKIPPARAM(CHRCODE-2882)ELSE IF
  1049  CHRCODE<3156 THEN BEGIN PRINTESC(395);PRINTINT(CHRCODE-2900);
  1050  END ELSE BEGIN PRINTESC(396);PRINTINT(CHRCODE-3156);END;
  1051  {:227}{231:}72:IF CHRCODE>=3422 THEN BEGIN PRINTESC(407);
  1052  PRINTINT(CHRCODE-3422);END ELSE CASE CHRCODE OF 3413:PRINTESC(398);
  1053  3414:PRINTESC(399);3415:PRINTESC(400);3416:PRINTESC(401);
  1054  3417:PRINTESC(402);3418:PRINTESC(403);3419:PRINTESC(404);
  1055  3420:PRINTESC(405);ELSE PRINTESC(406)END;
  1056  {:231}{239:}73:IF CHRCODE<5318 THEN PRINTPARAM(CHRCODE-5263)ELSE BEGIN
  1057  PRINTESC(476);PRINTINT(CHRCODE-5318);END;
  1058  {:239}{249:}74:IF CHRCODE<5851 THEN PRINTLENGTHPARAM(CHRCODE-5830)ELSE
  1059  BEGIN PRINTESC(500);PRINTINT(CHRCODE-5851);END;
  1060  {:249}{266:}45:PRINTESC(508);90:PRINTESC(509);40:PRINTESC(510);
  1061  41:PRINTESC(511);77:PRINTESC(519);61:PRINTESC(512);42:PRINTESC(531);
  1062  16:PRINTESC(513);107:PRINTESC(504);88:PRINTESC(518);15:PRINTESC(514);
  1063  92:PRINTESC(515);67:PRINTESC(505);62:PRINTESC(516);64:PRINTESC(32);
  1064  102:PRINTESC(517);32:PRINTESC(520);36:PRINTESC(521);39:PRINTESC(522);
  1065  37:PRINTESC(330);44:PRINTESC(47);18:PRINTESC(351);46:PRINTESC(523);
  1066  17:PRINTESC(524);54:PRINTESC(525);91:PRINTESC(526);34:PRINTESC(527);
  1067  65:PRINTESC(528);103:PRINTESC(529);55:PRINTESC(335);63:PRINTESC(530);
  1068  66:PRINTESC(533);96:PRINTESC(534);0:PRINTESC(535);98:PRINTESC(536);
  1069  80:PRINTESC(532);84:PRINTESC(408);109:PRINTESC(537);71:PRINTESC(407);
  1070  38:PRINTESC(352);33:PRINTESC(538);56:PRINTESC(539);35:PRINTESC(540);
  1071  {:266}{335:}13:PRINTESC(597);
  1072  {:335}{377:}104:IF CHRCODE=0 THEN PRINTESC(629)ELSE PRINTESC(630);
  1073  {:377}{385:}110:CASE CHRCODE OF 1:PRINTESC(632);2:PRINTESC(633);
  1074  3:PRINTESC(634);4:PRINTESC(635);ELSE PRINTESC(631)END;
  1075  {:385}{412:}89:IF CHRCODE=0 THEN PRINTESC(476)ELSE IF CHRCODE=1 THEN
  1076  PRINTESC(500)ELSE IF CHRCODE=2 THEN PRINTESC(395)ELSE PRINTESC(396);
  1077  {:412}{417:}79:IF CHRCODE=1 THEN PRINTESC(669)ELSE PRINTESC(668);
  1078  82:IF CHRCODE=0 THEN PRINTESC(670)ELSE PRINTESC(671);
  1079  83:IF CHRCODE=1 THEN PRINTESC(672)ELSE IF CHRCODE=3 THEN PRINTESC(673)
  1080  ELSE PRINTESC(674);70:CASE CHRCODE OF 0:PRINTESC(675);1:PRINTESC(676);
  1081  2:PRINTESC(677);3:PRINTESC(678);ELSE PRINTESC(679)END;
  1082  {:417}{469:}108:CASE CHRCODE OF 0:PRINTESC(735);1:PRINTESC(736);
  1083  2:PRINTESC(737);3:PRINTESC(738);4:PRINTESC(739);ELSE PRINTESC(740)END;
  1084  {:469}{488:}105:CASE CHRCODE OF 1:PRINTESC(758);2:PRINTESC(759);
  1085  3:PRINTESC(760);4:PRINTESC(761);5:PRINTESC(762);6:PRINTESC(763);
  1086  7:PRINTESC(764);8:PRINTESC(765);9:PRINTESC(766);10:PRINTESC(767);
  1087  11:PRINTESC(768);12:PRINTESC(769);13:PRINTESC(770);14:PRINTESC(771);
  1088  15:PRINTESC(772);16:PRINTESC(773);ELSE PRINTESC(757)END;
  1089  {:488}{492:}106:IF CHRCODE=2 THEN PRINTESC(774)ELSE IF CHRCODE=4 THEN
  1090  PRINTESC(775)ELSE PRINTESC(776);
  1091  {:492}{781:}4:IF CHRCODE=256 THEN PRINTESC(898)ELSE BEGIN PRINT(902);
  1092  PRINT(CHRCODE);END;
  1093  5:IF CHRCODE=257 THEN PRINTESC(899)ELSE PRINTESC(900);
  1094  {:781}{984:}81:CASE CHRCODE OF 0:PRINTESC(970);1:PRINTESC(971);
  1095  2:PRINTESC(972);3:PRINTESC(973);4:PRINTESC(974);5:PRINTESC(975);
  1096  6:PRINTESC(976);ELSE PRINTESC(977)END;
  1097  {:984}{1053:}14:IF CHRCODE=1 THEN PRINTESC(1026)ELSE PRINTESC(1025);
  1098  {:1053}{1059:}26:CASE CHRCODE OF 4:PRINTESC(1027);0:PRINTESC(1028);
  1099  1:PRINTESC(1029);2:PRINTESC(1030);ELSE PRINTESC(1031)END;
  1100  27:CASE CHRCODE OF 4:PRINTESC(1032);0:PRINTESC(1033);1:PRINTESC(1034);
  1101  2:PRINTESC(1035);ELSE PRINTESC(1036)END;28:PRINTESC(336);
  1102  29:PRINTESC(340);30:PRINTESC(342);
  1103  {:1059}{1072:}21:IF CHRCODE=1 THEN PRINTESC(1054)ELSE PRINTESC(1055);
  1104  22:IF CHRCODE=1 THEN PRINTESC(1056)ELSE PRINTESC(1057);
  1105  20:CASE CHRCODE OF 0:PRINTESC(409);1:PRINTESC(1058);2:PRINTESC(1059);
  1106  3:PRINTESC(965);4:PRINTESC(1060);5:PRINTESC(967);ELSE PRINTESC(1061)END;
  1107  31:IF CHRCODE=100 THEN PRINTESC(1063)ELSE IF CHRCODE=101 THEN PRINTESC(
  1108  1064)ELSE IF CHRCODE=102 THEN PRINTESC(1065)ELSE PRINTESC(1062);
  1109  {:1072}{1089:}43:IF CHRCODE=0 THEN PRINTESC(1081)ELSE PRINTESC(1080);
  1110  {:1089}{1108:}25:IF CHRCODE=10 THEN PRINTESC(1092)ELSE IF CHRCODE=11
  1111  THEN PRINTESC(1091)ELSE PRINTESC(1090);
  1112  23:IF CHRCODE=1 THEN PRINTESC(1094)ELSE PRINTESC(1093);
  1113  24:IF CHRCODE=1 THEN PRINTESC(1096)ELSE PRINTESC(1095);
  1114  {:1108}{1115:}47:IF CHRCODE=1 THEN PRINTESC(45)ELSE PRINTESC(349);
  1115  {:1115}{1143:}48:IF CHRCODE=1 THEN PRINTESC(1128)ELSE PRINTESC(1127);
  1116  {:1143}{1157:}50:CASE CHRCODE OF 16:PRINTESC(866);17:PRINTESC(867);
  1117  18:PRINTESC(868);19:PRINTESC(869);20:PRINTESC(870);21:PRINTESC(871);
  1118  22:PRINTESC(872);23:PRINTESC(873);26:PRINTESC(875);
  1119  ELSE PRINTESC(874)END;
  1120  51:IF CHRCODE=1 THEN PRINTESC(878)ELSE IF CHRCODE=2 THEN PRINTESC(879)
  1121  ELSE PRINTESC(1129);{:1157}{1170:}53:PRINTSTYLE(CHRCODE);
  1122  {:1170}{1179:}52:CASE CHRCODE OF 1:PRINTESC(1148);2:PRINTESC(1149);
  1123  3:PRINTESC(1150);4:PRINTESC(1151);5:PRINTESC(1152);
  1124  ELSE PRINTESC(1147)END;
  1125  {:1179}{1189:}49:IF CHRCODE=30 THEN PRINTESC(876)ELSE PRINTESC(877);
  1126  {:1189}{1209:}93:IF CHRCODE=1 THEN PRINTESC(1171)ELSE IF CHRCODE=2 THEN
  1127  PRINTESC(1172)ELSE PRINTESC(1173);
  1128  97:IF CHRCODE=0 THEN PRINTESC(1174)ELSE IF CHRCODE=1 THEN PRINTESC(1175)
  1129  ELSE IF CHRCODE=2 THEN PRINTESC(1176)ELSE PRINTESC(1177);
  1130  {:1209}{1220:}94:IF CHRCODE<>0 THEN PRINTESC(1192)ELSE PRINTESC(1191);
  1131  {:1220}{1223:}95:CASE CHRCODE OF 0:PRINTESC(1193);1:PRINTESC(1194);
  1132  2:PRINTESC(1195);3:PRINTESC(1196);4:PRINTESC(1197);5:PRINTESC(1198);
  1133  ELSE PRINTESC(1199)END;68:BEGIN PRINTESC(513);PRINTHEX(CHRCODE);END;
  1134  69:BEGIN PRINTESC(524);PRINTHEX(CHRCODE);END;
  1135  {:1223}{1231:}85:IF CHRCODE=3983 THEN PRINTESC(415)ELSE IF CHRCODE=5007
  1136  THEN PRINTESC(419)ELSE IF CHRCODE=4239 THEN PRINTESC(416)ELSE IF CHRCODE
  1137  =4495 THEN PRINTESC(417)ELSE IF CHRCODE=4751 THEN PRINTESC(418)ELSE
  1138  PRINTESC(477);86:PRINTSIZE(CHRCODE-3935);
  1139  {:1231}{1251:}99:IF CHRCODE=1 THEN PRINTESC(953)ELSE PRINTESC(941);
  1140  {:1251}{1255:}78:IF CHRCODE=0 THEN PRINTESC(1217)ELSE PRINTESC(1218);
  1141  {:1255}{1261:}87:BEGIN PRINT(1226);SLOWPRINT(FONTNAME[CHRCODE]);
  1142  IF FONTSIZE[CHRCODE]<>FONTDSIZE[CHRCODE]THEN BEGIN PRINT(741);
  1143  PRINTSCALED(FONTSIZE[CHRCODE]);PRINT(397);END;END;
  1144  {:1261}{1263:}100:CASE CHRCODE OF 0:PRINTESC(274);1:PRINTESC(275);
  1145  2:PRINTESC(276);ELSE PRINTESC(1227)END;
  1146  {:1263}{1273:}60:IF CHRCODE=0 THEN PRINTESC(1229)ELSE PRINTESC(1228);
  1147  {:1273}{1278:}58:IF CHRCODE=0 THEN PRINTESC(1230)ELSE PRINTESC(1231);
  1148  {:1278}{1287:}57:IF CHRCODE=4239 THEN PRINTESC(1237)ELSE PRINTESC(1238);
  1149  {:1287}{1292:}19:CASE CHRCODE OF 1:PRINTESC(1240);2:PRINTESC(1241);
  1150  3:PRINTESC(1242);ELSE PRINTESC(1239)END;{:1292}{1295:}101:PRINT(1249);
  1151  111:PRINT(1250);112:PRINTESC(1251);113:PRINTESC(1252);
  1152  114:BEGIN PRINTESC(1171);PRINTESC(1252);END;115:PRINTESC(1253);
  1153  {:1295}{1346:}59:CASE CHRCODE OF 0:PRINTESC(1285);1:PRINTESC(594);
  1154  2:PRINTESC(1286);3:PRINTESC(1287);4:PRINTESC(1288);5:PRINTESC(1289);
  1155  ELSE PRINT(1290)END;{:1346}ELSE PRINT(567)END;END;
  1156  {:298}{PROCEDURE SHOWEQTB(N:HALFWORD);
  1157  BEGIN IF N<1 THEN PRINTCHAR(63)ELSE IF N<2882 THEN[223:]BEGIN SPRINTCS(N
  1158  );PRINTCHAR(61);PRINTCMDCHR(EQTB[N].HH.B0,EQTB[N].HH.RH);
  1159  IF EQTB[N].HH.B0>=111 THEN BEGIN PRINTCHAR(58);
  1160  SHOWTOKENLIST(MEM[EQTB[N].HH.RH].HH.RH,0,32);END;
  1161  END[:223]ELSE IF N<3412 THEN[229:]IF N<2900 THEN BEGIN PRINTSKIPPARAM(N
  1162  -2882);PRINTCHAR(61);
  1163  IF N<2897 THEN PRINTSPEC(EQTB[N].HH.RH,397)ELSE PRINTSPEC(EQTB[N].HH.RH,
  1164  337);END ELSE IF N<3156 THEN BEGIN PRINTESC(395);PRINTINT(N-2900);
  1165  PRINTCHAR(61);PRINTSPEC(EQTB[N].HH.RH,397);END ELSE BEGIN PRINTESC(396);
  1166  PRINTINT(N-3156);PRINTCHAR(61);PRINTSPEC(EQTB[N].HH.RH,337);
  1167  END[:229]ELSE IF N<5263 THEN[233:]IF N=3412 THEN BEGIN PRINTESC(408);
  1168  PRINTCHAR(61);
  1169  IF EQTB[3412].HH.RH=0 THEN PRINTCHAR(48)ELSE PRINTINT(MEM[EQTB[3412].HH.
  1170  RH].HH.LH);END ELSE IF N<3422 THEN BEGIN PRINTCMDCHR(72,N);
  1171  PRINTCHAR(61);
  1172  IF EQTB[N].HH.RH<>0 THEN SHOWTOKENLIST(MEM[EQTB[N].HH.RH].HH.RH,0,32);
  1173  END ELSE IF N<3678 THEN BEGIN PRINTESC(407);PRINTINT(N-3422);
  1174  PRINTCHAR(61);
  1175  IF EQTB[N].HH.RH<>0 THEN SHOWTOKENLIST(MEM[EQTB[N].HH.RH].HH.RH,0,32);
  1176  END ELSE IF N<3934 THEN BEGIN PRINTESC(409);PRINTINT(N-3678);
  1177  PRINTCHAR(61);
  1178  IF EQTB[N].HH.RH=0 THEN PRINT(410)ELSE BEGIN DEPTHTHRESHOLD:=0;
  1179  BREADTHMAX:=1;SHOWNODELIST(EQTB[N].HH.RH);END;
  1180  END ELSE IF N<3983 THEN[234:]BEGIN IF N=3934 THEN PRINT(411)ELSE IF N<
  1181  3951 THEN BEGIN PRINTESC(412);PRINTINT(N-3935);
  1182  END ELSE IF N<3967 THEN BEGIN PRINTESC(413);PRINTINT(N-3951);
  1183  END ELSE BEGIN PRINTESC(414);PRINTINT(N-3967);END;PRINTCHAR(61);
  1184  PRINTESC(HASH[2624+EQTB[N].HH.RH].RH);
  1185  END[:234]ELSE[235:]IF N<5007 THEN BEGIN IF N<4239 THEN BEGIN PRINTESC(
  1186  415);PRINTINT(N-3983);END ELSE IF N<4495 THEN BEGIN PRINTESC(416);
  1187  PRINTINT(N-4239);END ELSE IF N<4751 THEN BEGIN PRINTESC(417);
  1188  PRINTINT(N-4495);END ELSE BEGIN PRINTESC(418);PRINTINT(N-4751);END;
  1189  PRINTCHAR(61);PRINTINT(EQTB[N].HH.RH);END ELSE BEGIN PRINTESC(419);
  1190  PRINTINT(N-5007);PRINTCHAR(61);PRINTINT(EQTB[N].HH.RH-0);
  1191  END[:235][:233]ELSE IF N<5830 THEN[242:]BEGIN IF N<5318 THEN PRINTPARAM(
  1192  N-5263)ELSE IF N<5574 THEN BEGIN PRINTESC(476);PRINTINT(N-5318);
  1193  END ELSE BEGIN PRINTESC(477);PRINTINT(N-5574);END;PRINTCHAR(61);
  1194  PRINTINT(EQTB[N].INT);
  1195  END[:242]ELSE IF N<=6106 THEN[251:]BEGIN IF N<5851 THEN PRINTLENGTHPARAM
  1196  (N-5830)ELSE BEGIN PRINTESC(500);PRINTINT(N-5851);END;PRINTCHAR(61);
  1197  PRINTSCALED(EQTB[N].INT);PRINT(397);END[:251]ELSE PRINTCHAR(63);END;}
  1198  {:252}{259:}FUNCTION IDLOOKUP(J,L:INTEGER):HALFWORD;LABEL 40;
  1199  VAR H:INTEGER;D:INTEGER;P:HALFWORD;K:HALFWORD;BEGIN{261:}H:=BUFFER[J];
  1200  FOR K:=J+1 TO J+L-1 DO BEGIN H:=H+H+BUFFER[K];
  1201  WHILE H>=1777 DO H:=H-1777;END{:261};P:=H+514;
  1202  WHILE TRUE DO BEGIN IF HASH[P].RH>0 THEN IF(STRSTART[HASH[P].RH+1]-
  1203  STRSTART[HASH[P].RH])=L THEN IF STREQBUF(HASH[P].RH,J)THEN GOTO 40;
  1204  IF HASH[P].LH=0 THEN BEGIN IF NONEWCONTROLSEQUENCE THEN P:=2881 ELSE
  1205  {260:}BEGIN IF HASH[P].RH>0 THEN BEGIN REPEAT IF(HASHUSED=514)THEN
  1206  OVERFLOW(503,2100);HASHUSED:=HASHUSED-1;UNTIL HASH[HASHUSED].RH=0;
  1207  HASH[P].LH:=HASHUSED;P:=HASHUSED;END;
  1208  BEGIN IF POOLPTR+L>POOLSIZE THEN OVERFLOW(257,POOLSIZE-INITPOOLPTR);END;
  1209  D:=(POOLPTR-STRSTART[STRPTR]);
  1210  WHILE POOLPTR>STRSTART[STRPTR]DO BEGIN POOLPTR:=POOLPTR-1;
  1211  STRPOOL[POOLPTR+L]:=STRPOOL[POOLPTR];END;
  1212  FOR K:=J TO J+L-1 DO BEGIN STRPOOL[POOLPTR]:=BUFFER[K];
  1213  POOLPTR:=POOLPTR+1;END;HASH[P].RH:=MAKESTRING;POOLPTR:=POOLPTR+D;
  1214  {CSCOUNT:=CSCOUNT+1;}END{:260};GOTO 40;END;P:=HASH[P].LH;END;
  1215  40:IDLOOKUP:=P;END;{:259}{264:}PROCEDURE PRIMITIVE(S:STRNUMBER;
  1216  C:QUARTERWORD;O:HALFWORD);VAR K:POOLPOINTER;J:SMALLNUMBER;L:SMALLNUMBER;
  1217  BEGIN IF S<256 THEN CURVAL:=S+257 ELSE BEGIN K:=STRSTART[S];
  1218  L:=STRSTART[S+1]-K;FOR J:=0 TO L-1 DO BUFFER[J]:=STRPOOL[K+J];
  1219  CURVAL:=IDLOOKUP(0,L);BEGIN STRPTR:=STRPTR-1;POOLPTR:=STRSTART[STRPTR];
  1220  END;HASH[CURVAL].RH:=S;END;EQTB[CURVAL].HH.B1:=1;EQTB[CURVAL].HH.B0:=C;
  1221  EQTB[CURVAL].HH.RH:=O;END;
  1222  {:264}{274:}PROCEDURE NEWSAVELEVEL(C:GROUPCODE);
  1223  BEGIN IF SAVEPTR>MAXSAVESTACK THEN BEGIN MAXSAVESTACK:=SAVEPTR;
  1224  IF MAXSAVESTACK>SAVESIZE-6 THEN OVERFLOW(541,SAVESIZE);END;
  1225  SAVESTACK[SAVEPTR].HH.B0:=3;SAVESTACK[SAVEPTR].HH.B1:=CURGROUP;
  1226  SAVESTACK[SAVEPTR].HH.RH:=CURBOUNDARY;
  1227  IF CURLEVEL=255 THEN OVERFLOW(542,255);CURBOUNDARY:=SAVEPTR;
  1228  CURLEVEL:=CURLEVEL+1;SAVEPTR:=SAVEPTR+1;CURGROUP:=C;END;
  1229  {:274}{275:}PROCEDURE EQDESTROY(W:MEMORYWORD);VAR Q:HALFWORD;
  1230  BEGIN CASE W.HH.B0 OF 111,112,113,114:DELETETOKENREF(W.HH.RH);
  1231  117:DELETEGLUEREF(W.HH.RH);118:BEGIN Q:=W.HH.RH;
  1232  IF Q<>0 THEN FREENODE(Q,MEM[Q].HH.LH+MEM[Q].HH.LH+1);END;
  1233  119:FLUSHNODELIST(W.HH.RH);ELSE END;END;
  1234  {:275}{276:}PROCEDURE EQSAVE(P:HALFWORD;L:QUARTERWORD);
  1235  BEGIN IF SAVEPTR>MAXSAVESTACK THEN BEGIN MAXSAVESTACK:=SAVEPTR;
  1236  IF MAXSAVESTACK>SAVESIZE-6 THEN OVERFLOW(541,SAVESIZE);END;
  1237  IF L=0 THEN SAVESTACK[SAVEPTR].HH.B0:=1 ELSE BEGIN SAVESTACK[SAVEPTR]:=
  1238  EQTB[P];SAVEPTR:=SAVEPTR+1;SAVESTACK[SAVEPTR].HH.B0:=0;END;
  1239  SAVESTACK[SAVEPTR].HH.B1:=L;SAVESTACK[SAVEPTR].HH.RH:=P;
  1240  SAVEPTR:=SAVEPTR+1;END;{:276}{277:}PROCEDURE EQDEFINE(P:HALFWORD;
  1241  T:QUARTERWORD;E:HALFWORD);
  1242  BEGIN IF EQTB[P].HH.B1=CURLEVEL THEN EQDESTROY(EQTB[P])ELSE IF CURLEVEL>
  1243  1 THEN EQSAVE(P,EQTB[P].HH.B1);EQTB[P].HH.B1:=CURLEVEL;EQTB[P].HH.B0:=T;
  1244  EQTB[P].HH.RH:=E;END;{:277}{278:}PROCEDURE EQWORDDEFINE(P:HALFWORD;
  1245  W:INTEGER);
  1246  BEGIN IF XEQLEVEL[P]<>CURLEVEL THEN BEGIN EQSAVE(P,XEQLEVEL[P]);
  1247  XEQLEVEL[P]:=CURLEVEL;END;EQTB[P].INT:=W;END;
  1248  {:278}{279:}PROCEDURE GEQDEFINE(P:HALFWORD;T:QUARTERWORD;E:HALFWORD);
  1249  BEGIN EQDESTROY(EQTB[P]);EQTB[P].HH.B1:=1;EQTB[P].HH.B0:=T;
  1250  EQTB[P].HH.RH:=E;END;PROCEDURE GEQWORDDEFINE(P:HALFWORD;W:INTEGER);
  1251  BEGIN EQTB[P].INT:=W;XEQLEVEL[P]:=1;END;
  1252  {:279}{280:}PROCEDURE SAVEFORAFTER(T:HALFWORD);
  1253  BEGIN IF CURLEVEL>1 THEN BEGIN IF SAVEPTR>MAXSAVESTACK THEN BEGIN
  1254  MAXSAVESTACK:=SAVEPTR;
  1255  IF MAXSAVESTACK>SAVESIZE-6 THEN OVERFLOW(541,SAVESIZE);END;
  1256  SAVESTACK[SAVEPTR].HH.B0:=2;SAVESTACK[SAVEPTR].HH.B1:=0;
  1257  SAVESTACK[SAVEPTR].HH.RH:=T;SAVEPTR:=SAVEPTR+1;END;END;
  1258  {:280}{281:}{284:}{PROCEDURE RESTORETRACE(P:HALFWORD;S:STRNUMBER);
  1259  BEGIN BEGINDIAGNOSTIC;PRINTCHAR(123);PRINT(S);PRINTCHAR(32);SHOWEQTB(P);
  1260  PRINTCHAR(125);ENDDIAGNOSTIC(FALSE);END;}{:284}PROCEDURE BACKINPUT;
  1261  FORWARD;PROCEDURE UNSAVE;LABEL 30;VAR P:HALFWORD;L:QUARTERWORD;
  1262  T:HALFWORD;BEGIN IF CURLEVEL>1 THEN BEGIN CURLEVEL:=CURLEVEL-1;
  1263  {282:}WHILE TRUE DO BEGIN SAVEPTR:=SAVEPTR-1;
  1264  IF SAVESTACK[SAVEPTR].HH.B0=3 THEN GOTO 30;P:=SAVESTACK[SAVEPTR].HH.RH;
  1265  IF SAVESTACK[SAVEPTR].HH.B0=2 THEN{326:}BEGIN T:=CURTOK;CURTOK:=P;
  1266  BACKINPUT;CURTOK:=T;
  1267  END{:326}ELSE BEGIN IF SAVESTACK[SAVEPTR].HH.B0=0 THEN BEGIN L:=
  1268  SAVESTACK[SAVEPTR].HH.B1;SAVEPTR:=SAVEPTR-1;
  1269  END ELSE SAVESTACK[SAVEPTR]:=EQTB[2881];
  1270  {283:}IF P<5263 THEN IF EQTB[P].HH.B1=1 THEN BEGIN EQDESTROY(SAVESTACK[
  1271  SAVEPTR]);{IF EQTB[5300].INT>0 THEN RESTORETRACE(P,544);}
  1272  END ELSE BEGIN EQDESTROY(EQTB[P]);EQTB[P]:=SAVESTACK[SAVEPTR];
  1273  {IF EQTB[5300].INT>0 THEN RESTORETRACE(P,545);}
  1274  END ELSE IF XEQLEVEL[P]<>1 THEN BEGIN EQTB[P]:=SAVESTACK[SAVEPTR];
  1275  XEQLEVEL[P]:=L;{IF EQTB[5300].INT>0 THEN RESTORETRACE(P,545);}
  1276  END ELSE BEGIN{IF EQTB[5300].INT>0 THEN RESTORETRACE(P,544);}END{:283};
  1277  END;END;30:CURGROUP:=SAVESTACK[SAVEPTR].HH.B1;
  1278  CURBOUNDARY:=SAVESTACK[SAVEPTR].HH.RH{:282};END ELSE CONFUSION(543);END;
  1279  {:281}{288:}PROCEDURE PREPAREMAG;
  1280  BEGIN IF(MAGSET>0)AND(EQTB[5280].INT<>MAGSET)THEN BEGIN BEGIN IF
  1281  INTERACTION=3 THEN;PRINTNL(262);PRINT(547);END;PRINTINT(EQTB[5280].INT);
  1282  PRINT(548);PRINTNL(549);BEGIN HELPPTR:=2;HELPLINE[1]:=550;
  1283  HELPLINE[0]:=551;END;INTERROR(MAGSET);GEQWORDDEFINE(5280,MAGSET);END;
  1284  IF(EQTB[5280].INT<=0)OR(EQTB[5280].INT>32768)THEN BEGIN BEGIN IF
  1285  INTERACTION=3 THEN;PRINTNL(262);PRINT(552);END;BEGIN HELPPTR:=1;
  1286  HELPLINE[0]:=553;END;INTERROR(EQTB[5280].INT);GEQWORDDEFINE(5280,1000);
  1287  END;MAGSET:=EQTB[5280].INT;END;
  1288  {:288}{295:}PROCEDURE TOKENSHOW(P:HALFWORD);
  1289  BEGIN IF P<>0 THEN SHOWTOKENLIST(MEM[P].HH.RH,0,10000000);END;
  1290  {:295}{296:}PROCEDURE PRINTMEANING;BEGIN PRINTCMDCHR(CURCMD,CURCHR);
  1291  IF CURCMD>=111 THEN BEGIN PRINTCHAR(58);PRINTLN;TOKENSHOW(CURCHR);
  1292  END ELSE IF CURCMD=110 THEN BEGIN PRINTCHAR(58);PRINTLN;
  1293  TOKENSHOW(CURMARK[CURCHR]);END;END;{:296}{299:}PROCEDURE SHOWCURCMDCHR;
  1294  BEGIN BEGINDIAGNOSTIC;PRINTNL(123);
  1295  IF CURLIST.MODEFIELD<>SHOWNMODE THEN BEGIN PRINTMODE(CURLIST.MODEFIELD);
  1296  PRINT(568);SHOWNMODE:=CURLIST.MODEFIELD;END;PRINTCMDCHR(CURCMD,CURCHR);
  1297  PRINTCHAR(125);ENDDIAGNOSTIC(FALSE);END;
  1298  {:299}{311:}PROCEDURE SHOWCONTEXT;LABEL 30;VAR OLDSETTING:0..21;
  1299  NN:INTEGER;BOTTOMLINE:BOOLEAN;{315:}I:0..BUFSIZE;J:0..BUFSIZE;
  1300  L:0..HALFERRORLINE;M:INTEGER;N:0..ERRORLINE;P:INTEGER;Q:INTEGER;
  1301  {:315}BEGIN BASEPTR:=INPUTPTR;INPUTSTACK[BASEPTR]:=CURINPUT;NN:=-1;
  1302  BOTTOMLINE:=FALSE;WHILE TRUE DO BEGIN CURINPUT:=INPUTSTACK[BASEPTR];
  1303  IF(CURINPUT.STATEFIELD<>0)THEN IF(CURINPUT.NAMEFIELD>17)OR(BASEPTR=0)
  1304  THEN BOTTOMLINE:=TRUE;
  1305  IF(BASEPTR=INPUTPTR)OR BOTTOMLINE OR(NN<EQTB[5317].INT)THEN{312:}BEGIN
  1306  IF(BASEPTR=INPUTPTR)OR(CURINPUT.STATEFIELD<>0)OR(CURINPUT.INDEXFIELD<>3)
  1307  OR(CURINPUT.LOCFIELD<>0)THEN BEGIN TALLY:=0;OLDSETTING:=SELECTOR;
  1308  IF CURINPUT.STATEFIELD<>0 THEN BEGIN{313:}IF CURINPUT.NAMEFIELD<=17 THEN
  1309  IF(CURINPUT.NAMEFIELD=0)THEN IF BASEPTR=0 THEN PRINTNL(574)ELSE PRINTNL(
  1310  575)ELSE BEGIN PRINTNL(576);
  1311  IF CURINPUT.NAMEFIELD=17 THEN PRINTCHAR(42)ELSE PRINTINT(CURINPUT.
  1312  NAMEFIELD-1);PRINTCHAR(62);END ELSE BEGIN PRINTNL(577);PRINTINT(LINE);
  1313  END;PRINTCHAR(32){:313};{318:}BEGIN L:=TALLY;TALLY:=0;SELECTOR:=20;
  1314  TRICKCOUNT:=1000000;END;
  1315  IF BUFFER[CURINPUT.LIMITFIELD]=EQTB[5311].INT THEN J:=CURINPUT.
  1316  LIMITFIELD ELSE J:=CURINPUT.LIMITFIELD+1;
  1317  IF J>0 THEN FOR I:=CURINPUT.STARTFIELD TO J-1 DO BEGIN IF I=CURINPUT.
  1318  LOCFIELD THEN BEGIN FIRSTCOUNT:=TALLY;
  1319  TRICKCOUNT:=TALLY+1+ERRORLINE-HALFERRORLINE;
  1320  IF TRICKCOUNT<ERRORLINE THEN TRICKCOUNT:=ERRORLINE;END;PRINT(BUFFER[I]);
  1321  END{:318};
  1322  END ELSE BEGIN{314:}CASE CURINPUT.INDEXFIELD OF 0:PRINTNL(578);
  1323  1,2:PRINTNL(579);
  1324  3:IF CURINPUT.LOCFIELD=0 THEN PRINTNL(580)ELSE PRINTNL(581);
  1325  4:PRINTNL(582);5:BEGIN PRINTLN;PRINTCS(CURINPUT.NAMEFIELD);END;
  1326  6:PRINTNL(583);7:PRINTNL(584);8:PRINTNL(585);9:PRINTNL(586);
  1327  10:PRINTNL(587);11:PRINTNL(588);12:PRINTNL(589);13:PRINTNL(590);
  1328  14:PRINTNL(591);15:PRINTNL(592);ELSE PRINTNL(63)END{:314};
  1329  {319:}BEGIN L:=TALLY;TALLY:=0;SELECTOR:=20;TRICKCOUNT:=1000000;END;
  1330  IF CURINPUT.INDEXFIELD<5 THEN SHOWTOKENLIST(CURINPUT.STARTFIELD,CURINPUT
  1331  .LOCFIELD,100000)ELSE SHOWTOKENLIST(MEM[CURINPUT.STARTFIELD].HH.RH,
  1332  CURINPUT.LOCFIELD,100000){:319};END;SELECTOR:=OLDSETTING;
  1333  {317:}IF TRICKCOUNT=1000000 THEN BEGIN FIRSTCOUNT:=TALLY;
  1334  TRICKCOUNT:=TALLY+1+ERRORLINE-HALFERRORLINE;
  1335  IF TRICKCOUNT<ERRORLINE THEN TRICKCOUNT:=ERRORLINE;END;
  1336  IF TALLY<TRICKCOUNT THEN M:=TALLY-FIRSTCOUNT ELSE M:=TRICKCOUNT-
  1337  FIRSTCOUNT;IF L+FIRSTCOUNT<=HALFERRORLINE THEN BEGIN P:=0;
  1338  N:=L+FIRSTCOUNT;END ELSE BEGIN PRINT(277);
  1339  P:=L+FIRSTCOUNT-HALFERRORLINE+3;N:=HALFERRORLINE;END;
  1340  FOR Q:=P TO FIRSTCOUNT-1 DO PRINTCHAR(TRICKBUF[Q MOD ERRORLINE]);
  1341  PRINTLN;FOR Q:=1 TO N DO PRINTCHAR(32);
  1342  IF M+N<=ERRORLINE THEN P:=FIRSTCOUNT+M ELSE P:=FIRSTCOUNT+(ERRORLINE-N-3
  1343  );FOR Q:=FIRSTCOUNT TO P-1 DO PRINTCHAR(TRICKBUF[Q MOD ERRORLINE]);
  1344  IF M+N>ERRORLINE THEN PRINT(277){:317};NN:=NN+1;END;
  1345  END{:312}ELSE IF NN=EQTB[5317].INT THEN BEGIN PRINTNL(277);NN:=NN+1;END;
  1346  IF BOTTOMLINE THEN GOTO 30;BASEPTR:=BASEPTR-1;END;
  1347  30:CURINPUT:=INPUTSTACK[INPUTPTR];END;
  1348  {:311}{323:}PROCEDURE BEGINTOKENLIST(P:HALFWORD;T:QUARTERWORD);
  1349  BEGIN BEGIN IF INPUTPTR>MAXINSTACK THEN BEGIN MAXINSTACK:=INPUTPTR;
  1350  IF INPUTPTR=STACKSIZE THEN OVERFLOW(593,STACKSIZE);END;
  1351  INPUTSTACK[INPUTPTR]:=CURINPUT;INPUTPTR:=INPUTPTR+1;END;
  1352  CURINPUT.STATEFIELD:=0;CURINPUT.STARTFIELD:=P;CURINPUT.INDEXFIELD:=T;
  1353  IF T>=5 THEN BEGIN MEM[P].HH.LH:=MEM[P].HH.LH+1;
  1354  IF T=5 THEN CURINPUT.LIMITFIELD:=PARAMPTR ELSE BEGIN CURINPUT.LOCFIELD:=
  1355  MEM[P].HH.RH;IF EQTB[5293].INT>1 THEN BEGIN BEGINDIAGNOSTIC;
  1356  PRINTNL(338);CASE T OF 14:PRINTESC(351);15:PRINTESC(594);
  1357  ELSE PRINTCMDCHR(72,T+3407)END;PRINT(556);TOKENSHOW(P);
  1358  ENDDIAGNOSTIC(FALSE);END;END;END ELSE CURINPUT.LOCFIELD:=P;END;
  1359  {:323}{324:}PROCEDURE ENDTOKENLIST;
  1360  BEGIN IF CURINPUT.INDEXFIELD>=3 THEN BEGIN IF CURINPUT.INDEXFIELD<=4
  1361  THEN FLUSHLIST(CURINPUT.STARTFIELD)ELSE BEGIN DELETETOKENREF(CURINPUT.
  1362  STARTFIELD);
  1363  IF CURINPUT.INDEXFIELD=5 THEN WHILE PARAMPTR>CURINPUT.LIMITFIELD DO
  1364  BEGIN PARAMPTR:=PARAMPTR-1;FLUSHLIST(PARAMSTACK[PARAMPTR]);END;END;
  1365  END ELSE IF CURINPUT.INDEXFIELD=1 THEN IF ALIGNSTATE>500000 THEN
  1366  ALIGNSTATE:=0 ELSE FATALERROR(595);BEGIN INPUTPTR:=INPUTPTR-1;
  1367  CURINPUT:=INPUTSTACK[INPUTPTR];END;
  1368  BEGIN IF INTERRUPT<>0 THEN PAUSEFORINSTRUCTIONS;END;END;
  1369  {:324}{325:}PROCEDURE BACKINPUT;VAR P:HALFWORD;
  1370  BEGIN WHILE(CURINPUT.STATEFIELD=0)AND(CURINPUT.LOCFIELD=0)AND(CURINPUT.
  1371  INDEXFIELD<>2)DO ENDTOKENLIST;P:=GETAVAIL;MEM[P].HH.LH:=CURTOK;
  1372  IF CURTOK<768 THEN IF CURTOK<512 THEN ALIGNSTATE:=ALIGNSTATE-1 ELSE
  1373  ALIGNSTATE:=ALIGNSTATE+1;
  1374  BEGIN IF INPUTPTR>MAXINSTACK THEN BEGIN MAXINSTACK:=INPUTPTR;
  1375  IF INPUTPTR=STACKSIZE THEN OVERFLOW(593,STACKSIZE);END;
  1376  INPUTSTACK[INPUTPTR]:=CURINPUT;INPUTPTR:=INPUTPTR+1;END;
  1377  CURINPUT.STATEFIELD:=0;CURINPUT.STARTFIELD:=P;CURINPUT.INDEXFIELD:=3;
  1378  CURINPUT.LOCFIELD:=P;END;{:325}{327:}PROCEDURE BACKERROR;
  1379  BEGIN OKTOINTERRUPT:=FALSE;BACKINPUT;OKTOINTERRUPT:=TRUE;ERROR;END;
  1380  PROCEDURE INSERROR;BEGIN OKTOINTERRUPT:=FALSE;BACKINPUT;
  1381  CURINPUT.INDEXFIELD:=4;OKTOINTERRUPT:=TRUE;ERROR;END;
  1382  {:327}{328:}PROCEDURE BEGINFILEREADING;
  1383  BEGIN IF INOPEN=MAXINOPEN THEN OVERFLOW(596,MAXINOPEN);
  1384  IF FIRST=BUFSIZE THEN OVERFLOW(256,BUFSIZE);INOPEN:=INOPEN+1;
  1385  BEGIN IF INPUTPTR>MAXINSTACK THEN BEGIN MAXINSTACK:=INPUTPTR;
  1386  IF INPUTPTR=STACKSIZE THEN OVERFLOW(593,STACKSIZE);END;
  1387  INPUTSTACK[INPUTPTR]:=CURINPUT;INPUTPTR:=INPUTPTR+1;END;
  1388  CURINPUT.INDEXFIELD:=INOPEN;LINESTACK[CURINPUT.INDEXFIELD]:=LINE;
  1389  CURINPUT.STARTFIELD:=FIRST;CURINPUT.STATEFIELD:=1;CURINPUT.NAMEFIELD:=0;
  1390  END;{:328}{329:}PROCEDURE ENDFILEREADING;
  1391  BEGIN FIRST:=CURINPUT.STARTFIELD;LINE:=LINESTACK[CURINPUT.INDEXFIELD];
  1392  IF CURINPUT.NAMEFIELD>17 THEN ACLOSE(INPUTFILE[CURINPUT.INDEXFIELD]);
  1393  BEGIN INPUTPTR:=INPUTPTR-1;CURINPUT:=INPUTSTACK[INPUTPTR];END;
  1394  INOPEN:=INOPEN-1;END;{:329}{330:}PROCEDURE CLEARFORERRORPROMPT;
  1395  BEGIN WHILE(CURINPUT.STATEFIELD<>0)AND(CURINPUT.NAMEFIELD=0)AND(INPUTPTR
  1396  >0)AND(CURINPUT.LOCFIELD>CURINPUT.LIMITFIELD)DO ENDFILEREADING;PRINTLN;;
  1397  END;{:330}{336:}PROCEDURE CHECKOUTERVALIDITY;VAR P:HALFWORD;Q:HALFWORD;
  1398  BEGIN IF SCANNERSTATUS<>0 THEN BEGIN DELETIONSALLOWED:=FALSE;
  1399  {337:}IF CURCS<>0 THEN BEGIN IF(CURINPUT.STATEFIELD=0)OR(CURINPUT.
  1400  NAMEFIELD<1)OR(CURINPUT.NAMEFIELD>17)THEN BEGIN P:=GETAVAIL;
  1401  MEM[P].HH.LH:=4095+CURCS;BEGINTOKENLIST(P,3);END;CURCMD:=10;CURCHR:=32;
  1402  END{:337};IF SCANNERSTATUS>1 THEN{338:}BEGIN RUNAWAY;
  1403  IF CURCS=0 THEN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(604);
  1404  END ELSE BEGIN CURCS:=0;BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  1405  PRINT(605);END;END;PRINT(606);{339:}P:=GETAVAIL;
  1406  CASE SCANNERSTATUS OF 2:BEGIN PRINT(570);MEM[P].HH.LH:=637;END;
  1407  3:BEGIN PRINT(612);MEM[P].HH.LH:=PARTOKEN;LONGSTATE:=113;END;
  1408  4:BEGIN PRINT(572);MEM[P].HH.LH:=637;Q:=P;P:=GETAVAIL;MEM[P].HH.RH:=Q;
  1409  MEM[P].HH.LH:=6710;ALIGNSTATE:=-1000000;END;5:BEGIN PRINT(573);
  1410  MEM[P].HH.LH:=637;END;END;BEGINTOKENLIST(P,4){:339};PRINT(607);
  1411  SPRINTCS(WARNINGINDEX);BEGIN HELPPTR:=4;HELPLINE[3]:=608;
  1412  HELPLINE[2]:=609;HELPLINE[1]:=610;HELPLINE[0]:=611;END;ERROR;
  1413  END{:338}ELSE BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(598);
  1414  END;PRINTCMDCHR(105,CURIF);PRINT(599);PRINTINT(SKIPLINE);
  1415  BEGIN HELPPTR:=3;HELPLINE[2]:=600;HELPLINE[1]:=601;HELPLINE[0]:=602;END;
  1416  IF CURCS<>0 THEN CURCS:=0 ELSE HELPLINE[2]:=603;CURTOK:=6713;INSERROR;
  1417  END;DELETIONSALLOWED:=TRUE;END;END;{:336}{340:}PROCEDURE FIRMUPTHELINE;
  1418  FORWARD;{:340}{341:}PROCEDURE GETNEXT;LABEL 20,25,21,26,40,10;
  1419  VAR K:0..BUFSIZE;T:HALFWORD;CAT:0..15;C,CC:ASCIICODE;D:2..3;
  1420  BEGIN 20:CURCS:=0;
  1421  IF CURINPUT.STATEFIELD<>0 THEN{343:}BEGIN 25:IF CURINPUT.LOCFIELD<=
  1422  CURINPUT.LIMITFIELD THEN BEGIN CURCHR:=BUFFER[CURINPUT.LOCFIELD];
  1423  CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
  1424  21:CURCMD:=EQTB[3983+CURCHR].HH.RH;
  1425  {344:}CASE CURINPUT.STATEFIELD+CURCMD OF{345:}10,26,42,27,43{:345}:GOTO
  1426  25;
  1427  1,17,33:{354:}BEGIN IF CURINPUT.LOCFIELD>CURINPUT.LIMITFIELD THEN CURCS
  1428  :=513 ELSE BEGIN 26:K:=CURINPUT.LOCFIELD;CURCHR:=BUFFER[K];
  1429  CAT:=EQTB[3983+CURCHR].HH.RH;K:=K+1;
  1430  IF CAT=11 THEN CURINPUT.STATEFIELD:=17 ELSE IF CAT=10 THEN CURINPUT.
  1431  STATEFIELD:=17 ELSE CURINPUT.STATEFIELD:=1;
  1432  IF(CAT=11)AND(K<=CURINPUT.LIMITFIELD)THEN{356:}BEGIN REPEAT CURCHR:=
  1433  BUFFER[K];CAT:=EQTB[3983+CURCHR].HH.RH;K:=K+1;
  1434  UNTIL(CAT<>11)OR(K>CURINPUT.LIMITFIELD);
  1435  {355:}BEGIN IF BUFFER[K]=CURCHR THEN IF CAT=7 THEN IF K<CURINPUT.
  1436  LIMITFIELD THEN BEGIN C:=BUFFER[K+1];IF C<128 THEN BEGIN D:=2;
  1437  IF(((C>=48)AND(C<=57))OR((C>=97)AND(C<=102)))THEN IF K+2<=CURINPUT.
  1438  LIMITFIELD THEN BEGIN CC:=BUFFER[K+2];
  1439  IF(((CC>=48)AND(CC<=57))OR((CC>=97)AND(CC<=102)))THEN D:=D+1;END;
  1440  IF D>2 THEN BEGIN IF C<=57 THEN CURCHR:=C-48 ELSE CURCHR:=C-87;
  1441  IF CC<=57 THEN CURCHR:=16*CURCHR+CC-48 ELSE CURCHR:=16*CURCHR+CC-87;
  1442  BUFFER[K-1]:=CURCHR;
  1443  END ELSE IF C<64 THEN BUFFER[K-1]:=C+64 ELSE BUFFER[K-1]:=C-64;
  1444  CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD-D;FIRST:=FIRST-D;
  1445  WHILE K<=CURINPUT.LIMITFIELD DO BEGIN BUFFER[K]:=BUFFER[K+D];K:=K+1;END;
  1446  GOTO 26;END;END;END{:355};IF CAT<>11 THEN K:=K-1;
  1447  IF K>CURINPUT.LOCFIELD+1 THEN BEGIN CURCS:=IDLOOKUP(CURINPUT.LOCFIELD,K-
  1448  CURINPUT.LOCFIELD);CURINPUT.LOCFIELD:=K;GOTO 40;END;
  1449  END{:356}ELSE{355:}BEGIN IF BUFFER[K]=CURCHR THEN IF CAT=7 THEN IF K<
  1450  CURINPUT.LIMITFIELD THEN BEGIN C:=BUFFER[K+1];IF C<128 THEN BEGIN D:=2;
  1451  IF(((C>=48)AND(C<=57))OR((C>=97)AND(C<=102)))THEN IF K+2<=CURINPUT.
  1452  LIMITFIELD THEN BEGIN CC:=BUFFER[K+2];
  1453  IF(((CC>=48)AND(CC<=57))OR((CC>=97)AND(CC<=102)))THEN D:=D+1;END;
  1454  IF D>2 THEN BEGIN IF C<=57 THEN CURCHR:=C-48 ELSE CURCHR:=C-87;
  1455  IF CC<=57 THEN CURCHR:=16*CURCHR+CC-48 ELSE CURCHR:=16*CURCHR+CC-87;
  1456  BUFFER[K-1]:=CURCHR;
  1457  END ELSE IF C<64 THEN BUFFER[K-1]:=C+64 ELSE BUFFER[K-1]:=C-64;
  1458  CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD-D;FIRST:=FIRST-D;
  1459  WHILE K<=CURINPUT.LIMITFIELD DO BEGIN BUFFER[K]:=BUFFER[K+D];K:=K+1;END;
  1460  GOTO 26;END;END;END{:355};CURCS:=257+BUFFER[CURINPUT.LOCFIELD];
  1461  CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;END;40:CURCMD:=EQTB[CURCS].HH.B0;
  1462  CURCHR:=EQTB[CURCS].HH.RH;IF CURCMD>=113 THEN CHECKOUTERVALIDITY;
  1463  END{:354};14,30,46:{353:}BEGIN CURCS:=CURCHR+1;
  1464  CURCMD:=EQTB[CURCS].HH.B0;CURCHR:=EQTB[CURCS].HH.RH;
  1465  CURINPUT.STATEFIELD:=1;IF CURCMD>=113 THEN CHECKOUTERVALIDITY;END{:353};
  1466  8,24,40:{352:}BEGIN IF CURCHR=BUFFER[CURINPUT.LOCFIELD]THEN IF CURINPUT.
  1467  LOCFIELD<CURINPUT.LIMITFIELD THEN BEGIN C:=BUFFER[CURINPUT.LOCFIELD+1];
  1468  IF C<128 THEN BEGIN CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+2;
  1469  IF(((C>=48)AND(C<=57))OR((C>=97)AND(C<=102)))THEN IF CURINPUT.LOCFIELD<=
  1470  CURINPUT.LIMITFIELD THEN BEGIN CC:=BUFFER[CURINPUT.LOCFIELD];
  1471  IF(((CC>=48)AND(CC<=57))OR((CC>=97)AND(CC<=102)))THEN BEGIN CURINPUT.
  1472  LOCFIELD:=CURINPUT.LOCFIELD+1;
  1473  IF C<=57 THEN CURCHR:=C-48 ELSE CURCHR:=C-87;
  1474  IF CC<=57 THEN CURCHR:=16*CURCHR+CC-48 ELSE CURCHR:=16*CURCHR+CC-87;
  1475  GOTO 21;END;END;IF C<64 THEN CURCHR:=C+64 ELSE CURCHR:=C-64;GOTO 21;END;
  1476  END;CURINPUT.STATEFIELD:=1;END{:352};
  1477  16,32,48:{346:}BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  1478  PRINT(613);END;BEGIN HELPPTR:=2;HELPLINE[1]:=614;HELPLINE[0]:=615;END;
  1479  DELETIONSALLOWED:=FALSE;ERROR;DELETIONSALLOWED:=TRUE;GOTO 20;END{:346};
  1480  {347:}11:{349:}BEGIN CURINPUT.STATEFIELD:=17;CURCHR:=32;END{:349};
  1481  6:{348:}BEGIN CURINPUT.LOCFIELD:=CURINPUT.LIMITFIELD+1;CURCMD:=10;
  1482  CURCHR:=32;END{:348};
  1483  22,15,31,47:{350:}BEGIN CURINPUT.LOCFIELD:=CURINPUT.LIMITFIELD+1;
  1484  GOTO 25;END{:350};
  1485  38:{351:}BEGIN CURINPUT.LOCFIELD:=CURINPUT.LIMITFIELD+1;CURCS:=PARLOC;
  1486  CURCMD:=EQTB[CURCS].HH.B0;CURCHR:=EQTB[CURCS].HH.RH;
  1487  IF CURCMD>=113 THEN CHECKOUTERVALIDITY;END{:351};
  1488  2:ALIGNSTATE:=ALIGNSTATE+1;18,34:BEGIN CURINPUT.STATEFIELD:=1;
  1489  ALIGNSTATE:=ALIGNSTATE+1;END;3:ALIGNSTATE:=ALIGNSTATE-1;
  1490  19,35:BEGIN CURINPUT.STATEFIELD:=1;ALIGNSTATE:=ALIGNSTATE-1;END;
  1491  20,21,23,25,28,29,36,37,39,41,44,45:CURINPUT.STATEFIELD:=1;
  1492  {:347}ELSE END{:344};END ELSE BEGIN CURINPUT.STATEFIELD:=33;
  1493  {360:}IF CURINPUT.NAMEFIELD>17 THEN{362:}BEGIN LINE:=LINE+1;
  1494  FIRST:=CURINPUT.STARTFIELD;
  1495  IF NOT FORCEEOF THEN BEGIN IF INPUTLN(INPUTFILE[CURINPUT.INDEXFIELD],
  1496  TRUE)THEN FIRMUPTHELINE ELSE FORCEEOF:=TRUE;END;
  1497  IF FORCEEOF THEN BEGIN PRINTCHAR(41);OPENPARENS:=OPENPARENS-1;;
  1498  FORCEEOF:=FALSE;ENDFILEREADING;CHECKOUTERVALIDITY;GOTO 20;END;
  1499  IF(EQTB[5311].INT<0)OR(EQTB[5311].INT>255)THEN CURINPUT.LIMITFIELD:=
  1500  CURINPUT.LIMITFIELD-1 ELSE BUFFER[CURINPUT.LIMITFIELD]:=EQTB[5311].INT;
  1501  FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
  1502  END{:362}ELSE BEGIN IF NOT(CURINPUT.NAMEFIELD=0)THEN BEGIN CURCMD:=0;
  1503  CURCHR:=0;GOTO 10;END;IF INPUTPTR>0 THEN BEGIN ENDFILEREADING;GOTO 20;
  1504  END;IF SELECTOR<18 THEN OPENLOGFILE;
  1505  IF INTERACTION>1 THEN BEGIN IF(EQTB[5311].INT<0)OR(EQTB[5311].INT>255)
  1506  THEN CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD+1;
  1507  IF CURINPUT.LIMITFIELD=CURINPUT.STARTFIELD THEN PRINTNL(616);PRINTLN;
  1508  FIRST:=CURINPUT.STARTFIELD;BEGIN;PRINT(42);TERMINPUT;END;
  1509  CURINPUT.LIMITFIELD:=LAST;
  1510  IF(EQTB[5311].INT<0)OR(EQTB[5311].INT>255)THEN CURINPUT.LIMITFIELD:=
  1511  CURINPUT.LIMITFIELD-1 ELSE BUFFER[CURINPUT.LIMITFIELD]:=EQTB[5311].INT;
  1512  FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
  1513  END ELSE FATALERROR(617);END{:360};
  1514  BEGIN IF INTERRUPT<>0 THEN PAUSEFORINSTRUCTIONS;END;GOTO 25;END;
  1515  END{:343}ELSE{357:}IF CURINPUT.LOCFIELD<>0 THEN BEGIN T:=MEM[CURINPUT.
  1516  LOCFIELD].HH.LH;CURINPUT.LOCFIELD:=MEM[CURINPUT.LOCFIELD].HH.RH;
  1517  IF T>=4095 THEN BEGIN CURCS:=T-4095;CURCMD:=EQTB[CURCS].HH.B0;
  1518  CURCHR:=EQTB[CURCS].HH.RH;
  1519  IF CURCMD>=113 THEN IF CURCMD=116 THEN{358:}BEGIN CURCS:=MEM[CURINPUT.
  1520  LOCFIELD].HH.LH-4095;CURINPUT.LOCFIELD:=0;CURCMD:=EQTB[CURCS].HH.B0;
  1521  CURCHR:=EQTB[CURCS].HH.RH;IF CURCMD>100 THEN BEGIN CURCMD:=0;
  1522  CURCHR:=257;END;END{:358}ELSE CHECKOUTERVALIDITY;
  1523  END ELSE BEGIN CURCMD:=T DIV 256;CURCHR:=T MOD 256;
  1524  CASE CURCMD OF 1:ALIGNSTATE:=ALIGNSTATE+1;2:ALIGNSTATE:=ALIGNSTATE-1;
  1525  5:{359:}BEGIN BEGINTOKENLIST(PARAMSTACK[CURINPUT.LIMITFIELD+CURCHR-1],0)
  1526  ;GOTO 20;END{:359};ELSE END;END;END ELSE BEGIN ENDTOKENLIST;GOTO 20;
  1527  END{:357};
  1528  {342:}IF CURCMD<=5 THEN IF CURCMD>=4 THEN IF ALIGNSTATE=0 THEN{789:}
  1529  BEGIN IF(SCANNERSTATUS=4)OR(CURALIGN=0)THEN FATALERROR(595);
  1530  CURCMD:=MEM[CURALIGN+5].HH.LH;MEM[CURALIGN+5].HH.LH:=CURCHR;
  1531  IF CURCMD=63 THEN BEGINTOKENLIST(29990,2)ELSE BEGINTOKENLIST(MEM[
  1532  CURALIGN+2].INT,2);ALIGNSTATE:=1000000;GOTO 20;END{:789}{:342};10:END;
  1533  {:341}{363:}PROCEDURE FIRMUPTHELINE;VAR K:0..BUFSIZE;
  1534  BEGIN CURINPUT.LIMITFIELD:=LAST;
  1535  IF EQTB[5291].INT>0 THEN IF INTERACTION>1 THEN BEGIN;PRINTLN;
  1536  IF CURINPUT.STARTFIELD<CURINPUT.LIMITFIELD THEN FOR K:=CURINPUT.
  1537  STARTFIELD TO CURINPUT.LIMITFIELD-1 DO PRINT(BUFFER[K]);
  1538  FIRST:=CURINPUT.LIMITFIELD;BEGIN;PRINT(618);TERMINPUT;END;
  1539  IF LAST>FIRST THEN BEGIN FOR K:=FIRST TO LAST-1 DO BUFFER[K+CURINPUT.
  1540  STARTFIELD-FIRST]:=BUFFER[K];
  1541  CURINPUT.LIMITFIELD:=CURINPUT.STARTFIELD+LAST-FIRST;END;END;END;
  1542  {:363}{365:}PROCEDURE GETTOKEN;BEGIN NONEWCONTROLSEQUENCE:=FALSE;
  1543  GETNEXT;NONEWCONTROLSEQUENCE:=TRUE;
  1544  IF CURCS=0 THEN CURTOK:=(CURCMD*256)+CURCHR ELSE CURTOK:=4095+CURCS;END;
  1545  {:365}{366:}{389:}PROCEDURE MACROCALL;LABEL 10,22,30,31,40;
  1546  VAR R:HALFWORD;P:HALFWORD;Q:HALFWORD;S:HALFWORD;T:HALFWORD;U,V:HALFWORD;
  1547  RBRACEPTR:HALFWORD;N:SMALLNUMBER;UNBALANCE:HALFWORD;M:HALFWORD;
  1548  REFCOUNT:HALFWORD;SAVESCANNERSTATUS:SMALLNUMBER;
  1549  SAVEWARNINGINDEX:HALFWORD;MATCHCHR:ASCIICODE;
  1550  BEGIN SAVESCANNERSTATUS:=SCANNERSTATUS;SAVEWARNINGINDEX:=WARNINGINDEX;
  1551  WARNINGINDEX:=CURCS;REFCOUNT:=CURCHR;R:=MEM[REFCOUNT].HH.RH;N:=0;
  1552  IF EQTB[5293].INT>0 THEN{401:}BEGIN BEGINDIAGNOSTIC;PRINTLN;
  1553  PRINTCS(WARNINGINDEX);TOKENSHOW(REFCOUNT);ENDDIAGNOSTIC(FALSE);
  1554  END{:401};IF MEM[R].HH.LH<>3584 THEN{391:}BEGIN SCANNERSTATUS:=3;
  1555  UNBALANCE:=0;LONGSTATE:=EQTB[CURCS].HH.B0;
  1556  IF LONGSTATE>=113 THEN LONGSTATE:=LONGSTATE-2;
  1557  REPEAT MEM[29997].HH.RH:=0;
  1558  IF(MEM[R].HH.LH>3583)OR(MEM[R].HH.LH<3328)THEN S:=0 ELSE BEGIN MATCHCHR
  1559  :=MEM[R].HH.LH-3328;S:=MEM[R].HH.RH;R:=S;P:=29997;M:=0;END;
  1560  {392:}22:GETTOKEN;
  1561  IF CURTOK=MEM[R].HH.LH THEN{394:}BEGIN R:=MEM[R].HH.RH;
  1562  IF(MEM[R].HH.LH>=3328)AND(MEM[R].HH.LH<=3584)THEN BEGIN IF CURTOK<512
  1563  THEN ALIGNSTATE:=ALIGNSTATE-1;GOTO 40;END ELSE GOTO 22;END{:394};
  1564  {397:}IF S<>R THEN IF S=0 THEN{398:}BEGIN BEGIN IF INTERACTION=3 THEN;
  1565  PRINTNL(262);PRINT(650);END;SPRINTCS(WARNINGINDEX);PRINT(651);
  1566  BEGIN HELPPTR:=4;HELPLINE[3]:=652;HELPLINE[2]:=653;HELPLINE[1]:=654;
  1567  HELPLINE[0]:=655;END;ERROR;GOTO 10;END{:398}ELSE BEGIN T:=S;
  1568  REPEAT BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=MEM[T].HH.LH;
  1569  P:=Q;END;M:=M+1;U:=MEM[T].HH.RH;V:=S;
  1570  WHILE TRUE DO BEGIN IF U=R THEN IF CURTOK<>MEM[V].HH.LH THEN GOTO 30
  1571  ELSE BEGIN R:=MEM[V].HH.RH;GOTO 22;END;
  1572  IF MEM[U].HH.LH<>MEM[V].HH.LH THEN GOTO 30;U:=MEM[U].HH.RH;
  1573  V:=MEM[V].HH.RH;END;30:T:=MEM[T].HH.RH;UNTIL T=R;R:=S;END{:397};
  1574  IF CURTOK=PARTOKEN THEN IF LONGSTATE<>112 THEN{396:}BEGIN IF LONGSTATE=
  1575  111 THEN BEGIN RUNAWAY;BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  1576  PRINT(645);END;SPRINTCS(WARNINGINDEX);PRINT(646);BEGIN HELPPTR:=3;
  1577  HELPLINE[2]:=647;HELPLINE[1]:=648;HELPLINE[0]:=649;END;BACKERROR;END;
  1578  PSTACK[N]:=MEM[29997].HH.RH;ALIGNSTATE:=ALIGNSTATE-UNBALANCE;
  1579  FOR M:=0 TO N DO FLUSHLIST(PSTACK[M]);GOTO 10;END{:396};
  1580  IF CURTOK<768 THEN IF CURTOK<512 THEN{399:}BEGIN UNBALANCE:=1;
  1581  WHILE TRUE DO BEGIN BEGIN BEGIN Q:=AVAIL;
  1582  IF Q=0 THEN Q:=GETAVAIL ELSE BEGIN AVAIL:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;
  1583  {DYNUSED:=DYNUSED+1;}END;END;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;P:=Q;
  1584  END;GETTOKEN;
  1585  IF CURTOK=PARTOKEN THEN IF LONGSTATE<>112 THEN{396:}BEGIN IF LONGSTATE=
  1586  111 THEN BEGIN RUNAWAY;BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  1587  PRINT(645);END;SPRINTCS(WARNINGINDEX);PRINT(646);BEGIN HELPPTR:=3;
  1588  HELPLINE[2]:=647;HELPLINE[1]:=648;HELPLINE[0]:=649;END;BACKERROR;END;
  1589  PSTACK[N]:=MEM[29997].HH.RH;ALIGNSTATE:=ALIGNSTATE-UNBALANCE;
  1590  FOR M:=0 TO N DO FLUSHLIST(PSTACK[M]);GOTO 10;END{:396};
  1591  IF CURTOK<768 THEN IF CURTOK<512 THEN UNBALANCE:=UNBALANCE+1 ELSE BEGIN
  1592  UNBALANCE:=UNBALANCE-1;IF UNBALANCE=0 THEN GOTO 31;END;END;
  1593  31:RBRACEPTR:=P;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;
  1594  P:=Q;END;END{:399}ELSE{395:}BEGIN BACKINPUT;BEGIN IF INTERACTION=3 THEN;
  1595  PRINTNL(262);PRINT(637);END;SPRINTCS(WARNINGINDEX);PRINT(638);
  1596  BEGIN HELPPTR:=6;HELPLINE[5]:=639;HELPLINE[4]:=640;HELPLINE[3]:=641;
  1597  HELPLINE[2]:=642;HELPLINE[1]:=643;HELPLINE[0]:=644;END;
  1598  ALIGNSTATE:=ALIGNSTATE+1;LONGSTATE:=111;CURTOK:=PARTOKEN;INSERROR;
  1599  GOTO 22;
  1600  END{:395}ELSE{393:}BEGIN IF CURTOK=2592 THEN IF MEM[R].HH.LH<=3584 THEN
  1601  IF MEM[R].HH.LH>=3328 THEN GOTO 22;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
  1602  MEM[Q].HH.LH:=CURTOK;P:=Q;END;END{:393};M:=M+1;
  1603  IF MEM[R].HH.LH>3584 THEN GOTO 22;IF MEM[R].HH.LH<3328 THEN GOTO 22;
  1604  40:IF S<>0 THEN{400:}BEGIN IF(M=1)AND(MEM[P].HH.LH<768)THEN BEGIN MEM[
  1605  RBRACEPTR].HH.RH:=0;BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;
  1606  {DYNUSED:=DYNUSED-1;}END;P:=MEM[29997].HH.RH;PSTACK[N]:=MEM[P].HH.RH;
  1607  BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;{DYNUSED:=DYNUSED-1;}END;
  1608  END ELSE PSTACK[N]:=MEM[29997].HH.RH;N:=N+1;
  1609  IF EQTB[5293].INT>0 THEN BEGIN BEGINDIAGNOSTIC;PRINTNL(MATCHCHR);
  1610  PRINTINT(N);PRINT(656);SHOWTOKENLIST(PSTACK[N-1],0,1000);
  1611  ENDDIAGNOSTIC(FALSE);END;END{:400}{:392};UNTIL MEM[R].HH.LH=3584;
  1612  END{:391};
  1613  {390:}WHILE(CURINPUT.STATEFIELD=0)AND(CURINPUT.LOCFIELD=0)AND(CURINPUT.
  1614  INDEXFIELD<>2)DO ENDTOKENLIST;BEGINTOKENLIST(REFCOUNT,5);
  1615  CURINPUT.NAMEFIELD:=WARNINGINDEX;CURINPUT.LOCFIELD:=MEM[R].HH.RH;
  1616  IF N>0 THEN BEGIN IF PARAMPTR+N>MAXPARAMSTACK THEN BEGIN MAXPARAMSTACK:=
  1617  PARAMPTR+N;IF MAXPARAMSTACK>PARAMSIZE THEN OVERFLOW(636,PARAMSIZE);END;
  1618  FOR M:=0 TO N-1 DO PARAMSTACK[PARAMPTR+M]:=PSTACK[M];
  1619  PARAMPTR:=PARAMPTR+N;END{:390};10:SCANNERSTATUS:=SAVESCANNERSTATUS;
  1620  WARNINGINDEX:=SAVEWARNINGINDEX;END;{:389}{379:}PROCEDURE INSERTRELAX;
  1621  BEGIN CURTOK:=4095+CURCS;BACKINPUT;CURTOK:=6716;BACKINPUT;
  1622  CURINPUT.INDEXFIELD:=4;END;{:379}PROCEDURE PASSTEXT;FORWARD;
  1623  PROCEDURE STARTINPUT;FORWARD;PROCEDURE CONDITIONAL;FORWARD;
  1624  PROCEDURE GETXTOKEN;FORWARD;PROCEDURE CONVTOKS;FORWARD;
  1625  PROCEDURE INSTHETOKS;FORWARD;PROCEDURE EXPAND;VAR T:HALFWORD;
  1626  P,Q,R:HALFWORD;J:0..BUFSIZE;CVBACKUP:INTEGER;
  1627  CVLBACKUP,RADIXBACKUP,COBACKUP:SMALLNUMBER;BACKUPBACKUP:HALFWORD;
  1628  SAVESCANNERSTATUS:SMALLNUMBER;BEGIN CVBACKUP:=CURVAL;
  1629  CVLBACKUP:=CURVALLEVEL;RADIXBACKUP:=RADIX;COBACKUP:=CURORDER;
  1630  BACKUPBACKUP:=MEM[29987].HH.RH;
  1631  IF CURCMD<111 THEN{367:}BEGIN IF EQTB[5299].INT>1 THEN SHOWCURCMDCHR;
  1632  CASE CURCMD OF 110:{386:}BEGIN IF CURMARK[CURCHR]<>0 THEN BEGINTOKENLIST
  1633  (CURMARK[CURCHR],14);END{:386};102:{368:}BEGIN GETTOKEN;T:=CURTOK;
  1634  GETTOKEN;IF CURCMD>100 THEN EXPAND ELSE BACKINPUT;CURTOK:=T;BACKINPUT;
  1635  END{:368};103:{369:}BEGIN SAVESCANNERSTATUS:=SCANNERSTATUS;
  1636  SCANNERSTATUS:=0;GETTOKEN;SCANNERSTATUS:=SAVESCANNERSTATUS;T:=CURTOK;
  1637  BACKINPUT;IF T>=4095 THEN BEGIN P:=GETAVAIL;MEM[P].HH.LH:=6718;
  1638  MEM[P].HH.RH:=CURINPUT.LOCFIELD;CURINPUT.STARTFIELD:=P;
  1639  CURINPUT.LOCFIELD:=P;END;END{:369};107:{372:}BEGIN R:=GETAVAIL;P:=R;
  1640  REPEAT GETXTOKEN;IF CURCS=0 THEN BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
  1641  MEM[Q].HH.LH:=CURTOK;P:=Q;END;UNTIL CURCS<>0;
  1642  IF CURCMD<>67 THEN{373:}BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  1643  PRINT(625);END;PRINTESC(505);PRINT(626);BEGIN HELPPTR:=2;
  1644  HELPLINE[1]:=627;HELPLINE[0]:=628;END;BACKERROR;END{:373};
  1645  {374:}J:=FIRST;P:=MEM[R].HH.RH;
  1646  WHILE P<>0 DO BEGIN IF J>=MAXBUFSTACK THEN BEGIN MAXBUFSTACK:=J+1;
  1647  IF MAXBUFSTACK=BUFSIZE THEN OVERFLOW(256,BUFSIZE);END;
  1648  BUFFER[J]:=MEM[P].HH.LH MOD 256;J:=J+1;P:=MEM[P].HH.RH;END;
  1649  IF J>FIRST+1 THEN BEGIN NONEWCONTROLSEQUENCE:=FALSE;
  1650  CURCS:=IDLOOKUP(FIRST,J-FIRST);NONEWCONTROLSEQUENCE:=TRUE;
  1651  END ELSE IF J=FIRST THEN CURCS:=513 ELSE CURCS:=257+BUFFER[FIRST]{:374};
  1652  FLUSHLIST(R);IF EQTB[CURCS].HH.B0=101 THEN BEGIN EQDEFINE(CURCS,0,256);
  1653  END;CURTOK:=CURCS+4095;BACKINPUT;END{:372};108:CONVTOKS;109:INSTHETOKS;
  1654  105:CONDITIONAL;
  1655  106:{510:}IF CURCHR>IFLIMIT THEN IF IFLIMIT=1 THEN INSERTRELAX ELSE
  1656  BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(777);END;
  1657  PRINTCMDCHR(106,CURCHR);BEGIN HELPPTR:=1;HELPLINE[0]:=778;END;ERROR;
  1658  END ELSE BEGIN WHILE CURCHR<>2 DO PASSTEXT;{496:}BEGIN P:=CONDPTR;
  1659  IFLINE:=MEM[P+1].INT;CURIF:=MEM[P].HH.B1;IFLIMIT:=MEM[P].HH.B0;
  1660  CONDPTR:=MEM[P].HH.RH;FREENODE(P,2);END{:496};END{:510};
  1661  104:{378:}IF CURCHR>0 THEN FORCEEOF:=TRUE ELSE IF NAMEINPROGRESS THEN
  1662  INSERTRELAX ELSE STARTINPUT{:378};
  1663  ELSE{370:}BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(619);END;
  1664  BEGIN HELPPTR:=5;HELPLINE[4]:=620;HELPLINE[3]:=621;HELPLINE[2]:=622;
  1665  HELPLINE[1]:=623;HELPLINE[0]:=624;END;ERROR;END{:370}END;
  1666  END{:367}ELSE IF CURCMD<115 THEN MACROCALL ELSE{375:}BEGIN CURTOK:=6715;
  1667  BACKINPUT;END{:375};CURVAL:=CVBACKUP;CURVALLEVEL:=CVLBACKUP;
  1668  RADIX:=RADIXBACKUP;CURORDER:=COBACKUP;MEM[29987].HH.RH:=BACKUPBACKUP;
  1669  END;{:366}{380:}PROCEDURE GETXTOKEN;LABEL 20,30;BEGIN 20:GETNEXT;
  1670  IF CURCMD<=100 THEN GOTO 30;
  1671  IF CURCMD>=111 THEN IF CURCMD<115 THEN MACROCALL ELSE BEGIN CURCS:=2620;
  1672  CURCMD:=9;GOTO 30;END ELSE EXPAND;GOTO 20;
  1673  30:IF CURCS=0 THEN CURTOK:=(CURCMD*256)+CURCHR ELSE CURTOK:=4095+CURCS;
  1674  END;{:380}{381:}PROCEDURE XTOKEN;BEGIN WHILE CURCMD>100 DO BEGIN EXPAND;
  1675  GETNEXT;END;
  1676  IF CURCS=0 THEN CURTOK:=(CURCMD*256)+CURCHR ELSE CURTOK:=4095+CURCS;END;
  1677  {:381}{403:}PROCEDURE SCANLEFTBRACE;BEGIN{404:}REPEAT GETXTOKEN;
  1678  UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
  1679  IF CURCMD<>1 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  1680  PRINT(657);END;BEGIN HELPPTR:=4;HELPLINE[3]:=658;HELPLINE[2]:=659;
  1681  HELPLINE[1]:=660;HELPLINE[0]:=661;END;BACKERROR;CURTOK:=379;CURCMD:=1;
  1682  CURCHR:=123;ALIGNSTATE:=ALIGNSTATE+1;END;END;
  1683  {:403}{405:}PROCEDURE SCANOPTIONALEQUALS;BEGIN{406:}REPEAT GETXTOKEN;
  1684  UNTIL CURCMD<>10{:406};IF CURTOK<>3133 THEN BACKINPUT;END;
  1685  {:405}{407:}FUNCTION SCANKEYWORD(S:STRNUMBER):BOOLEAN;LABEL 10;
  1686  VAR P:HALFWORD;Q:HALFWORD;K:POOLPOINTER;BEGIN P:=29987;MEM[P].HH.RH:=0;
  1687  K:=STRSTART[S];WHILE K<STRSTART[S+1]DO BEGIN GETXTOKEN;
  1688  IF(CURCS=0)AND((CURCHR=STRPOOL[K])OR(CURCHR=STRPOOL[K]-32))THEN BEGIN
  1689  BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;P:=Q;END;K:=K+1;
  1690  END ELSE IF(CURCMD<>10)OR(P<>29987)THEN BEGIN BACKINPUT;
  1691  IF P<>29987 THEN BEGINTOKENLIST(MEM[29987].HH.RH,3);SCANKEYWORD:=FALSE;
  1692  GOTO 10;END;END;FLUSHLIST(MEM[29987].HH.RH);SCANKEYWORD:=TRUE;10:END;
  1693  {:407}{408:}PROCEDURE MUERROR;BEGIN BEGIN IF INTERACTION=3 THEN;
  1694  PRINTNL(262);PRINT(662);END;BEGIN HELPPTR:=1;HELPLINE[0]:=663;END;ERROR;
  1695  END;{:408}{409:}PROCEDURE SCANINT;FORWARD;
  1696  {433:}PROCEDURE SCANEIGHTBITINT;BEGIN SCANINT;
  1697  IF(CURVAL<0)OR(CURVAL>255)THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  1698  PRINTNL(262);PRINT(687);END;BEGIN HELPPTR:=2;HELPLINE[1]:=688;
  1699  HELPLINE[0]:=689;END;INTERROR(CURVAL);CURVAL:=0;END;END;
  1700  {:433}{434:}PROCEDURE SCANCHARNUM;BEGIN SCANINT;
  1701  IF(CURVAL<0)OR(CURVAL>255)THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  1702  PRINTNL(262);PRINT(690);END;BEGIN HELPPTR:=2;HELPLINE[1]:=691;
  1703  HELPLINE[0]:=689;END;INTERROR(CURVAL);CURVAL:=0;END;END;
  1704  {:434}{435:}PROCEDURE SCANFOURBITINT;BEGIN SCANINT;
  1705  IF(CURVAL<0)OR(CURVAL>15)THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  1706  PRINTNL(262);PRINT(692);END;BEGIN HELPPTR:=2;HELPLINE[1]:=693;
  1707  HELPLINE[0]:=689;END;INTERROR(CURVAL);CURVAL:=0;END;END;
  1708  {:435}{436:}PROCEDURE SCANFIFTEENBITINT;BEGIN SCANINT;
  1709  IF(CURVAL<0)OR(CURVAL>32767)THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  1710  PRINTNL(262);PRINT(694);END;BEGIN HELPPTR:=2;HELPLINE[1]:=695;
  1711  HELPLINE[0]:=689;END;INTERROR(CURVAL);CURVAL:=0;END;END;
  1712  {:436}{437:}PROCEDURE SCANTWENTYSEVENBITINT;BEGIN SCANINT;
  1713  IF(CURVAL<0)OR(CURVAL>134217727)THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  1714  PRINTNL(262);PRINT(696);END;BEGIN HELPPTR:=2;HELPLINE[1]:=697;
  1715  HELPLINE[0]:=689;END;INTERROR(CURVAL);CURVAL:=0;END;END;
  1716  {:437}{577:}PROCEDURE SCANFONTIDENT;VAR F:INTERNALFONTNUMBER;M:HALFWORD;
  1717  BEGIN{406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
  1718  IF CURCMD=88 THEN F:=EQTB[3934].HH.RH ELSE IF CURCMD=87 THEN F:=CURCHR
  1719  ELSE IF CURCMD=86 THEN BEGIN M:=CURCHR;SCANFOURBITINT;
  1720  F:=EQTB[M+CURVAL].HH.RH;END ELSE BEGIN BEGIN IF INTERACTION=3 THEN;
  1721  PRINTNL(262);PRINT(817);END;BEGIN HELPPTR:=2;HELPLINE[1]:=818;
  1722  HELPLINE[0]:=819;END;BACKERROR;F:=0;END;CURVAL:=F;END;
  1723  {:577}{578:}PROCEDURE FINDFONTDIMEN(WRITING:BOOLEAN);
  1724  VAR F:INTERNALFONTNUMBER;N:INTEGER;BEGIN SCANINT;N:=CURVAL;
  1725  SCANFONTIDENT;F:=CURVAL;
  1726  IF N<=0 THEN CURVAL:=FMEMPTR ELSE BEGIN IF WRITING AND(N<=4)AND(N>=2)AND
  1727  (FONTGLUE[F]<>0)THEN BEGIN DELETEGLUEREF(FONTGLUE[F]);FONTGLUE[F]:=0;
  1728  END;
  1729  IF N>FONTPARAMS[F]THEN IF F<FONTPTR THEN CURVAL:=FMEMPTR ELSE{580:}BEGIN
  1730  REPEAT IF FMEMPTR=FONTMEMSIZE THEN OVERFLOW(824,FONTMEMSIZE);
  1731  FONTINFO[FMEMPTR].INT:=0;FMEMPTR:=FMEMPTR+1;
  1732  FONTPARAMS[F]:=FONTPARAMS[F]+1;UNTIL N=FONTPARAMS[F];CURVAL:=FMEMPTR-1;
  1733  END{:580}ELSE CURVAL:=N+PARAMBASE[F];END;
  1734  {579:}IF CURVAL=FMEMPTR THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  1735  PRINTNL(262);PRINT(802);END;PRINTESC(HASH[2624+F].RH);PRINT(820);
  1736  PRINTINT(FONTPARAMS[F]);PRINT(821);BEGIN HELPPTR:=2;HELPLINE[1]:=822;
  1737  HELPLINE[0]:=823;END;ERROR;END{:579};END;
  1738  {:578}{:409}{413:}PROCEDURE SCANSOMETHINGINTERNAL(LEVEL:SMALLNUMBER;
  1739  NEGATIVE:BOOLEAN);VAR M:HALFWORD;P:0..NESTSIZE;BEGIN M:=CURCHR;
  1740  CASE CURCMD OF 85:{414:}BEGIN SCANCHARNUM;
  1741  IF M=5007 THEN BEGIN CURVAL:=EQTB[5007+CURVAL].HH.RH-0;CURVALLEVEL:=0;
  1742  END ELSE IF M<5007 THEN BEGIN CURVAL:=EQTB[M+CURVAL].HH.RH;
  1743  CURVALLEVEL:=0;END ELSE BEGIN CURVAL:=EQTB[M+CURVAL].INT;CURVALLEVEL:=0;
  1744  END;END{:414};
  1745  71,72,86,87,88:{415:}IF LEVEL<>5 THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  1746  PRINTNL(262);PRINT(664);END;BEGIN HELPPTR:=3;HELPLINE[2]:=665;
  1747  HELPLINE[1]:=666;HELPLINE[0]:=667;END;BACKERROR;BEGIN CURVAL:=0;
  1748  CURVALLEVEL:=1;END;
  1749  END ELSE IF CURCMD<=72 THEN BEGIN IF CURCMD<72 THEN BEGIN
  1750  SCANEIGHTBITINT;M:=3422+CURVAL;END;BEGIN CURVAL:=EQTB[M].HH.RH;
  1751  CURVALLEVEL:=5;END;END ELSE BEGIN BACKINPUT;SCANFONTIDENT;
  1752  BEGIN CURVAL:=2624+CURVAL;CURVALLEVEL:=4;END;END{:415};
  1753  73:BEGIN CURVAL:=EQTB[M].INT;CURVALLEVEL:=0;END;
  1754  74:BEGIN CURVAL:=EQTB[M].INT;CURVALLEVEL:=1;END;
  1755  75:BEGIN CURVAL:=EQTB[M].HH.RH;CURVALLEVEL:=2;END;
  1756  76:BEGIN CURVAL:=EQTB[M].HH.RH;CURVALLEVEL:=3;END;
  1757  79:{418:}IF ABS(CURLIST.MODEFIELD)<>M THEN BEGIN BEGIN IF INTERACTION=3
  1758  THEN;PRINTNL(262);PRINT(680);END;PRINTCMDCHR(79,M);BEGIN HELPPTR:=4;
  1759  HELPLINE[3]:=681;HELPLINE[2]:=682;HELPLINE[1]:=683;HELPLINE[0]:=684;END;
  1760  ERROR;IF LEVEL<>5 THEN BEGIN CURVAL:=0;CURVALLEVEL:=1;
  1761  END ELSE BEGIN CURVAL:=0;CURVALLEVEL:=0;END;
  1762  END ELSE IF M=1 THEN BEGIN CURVAL:=CURLIST.AUXFIELD.INT;CURVALLEVEL:=1;
  1763  END ELSE BEGIN CURVAL:=CURLIST.AUXFIELD.HH.LH;CURVALLEVEL:=0;END{:418};
  1764  80:{422:}IF CURLIST.MODEFIELD=0 THEN BEGIN CURVAL:=0;CURVALLEVEL:=0;
  1765  END ELSE BEGIN NEST[NESTPTR]:=CURLIST;P:=NESTPTR;
  1766  WHILE ABS(NEST[P].MODEFIELD)<>1 DO P:=P-1;BEGIN CURVAL:=NEST[P].PGFIELD;
  1767  CURVALLEVEL:=0;END;END{:422};
  1768  82:{419:}BEGIN IF M=0 THEN CURVAL:=DEADCYCLES ELSE CURVAL:=
  1769  INSERTPENALTIES;CURVALLEVEL:=0;END{:419};
  1770  81:{421:}BEGIN IF(PAGECONTENTS=0)AND(NOT OUTPUTACTIVE)THEN IF M=0 THEN
  1771  CURVAL:=1073741823 ELSE CURVAL:=0 ELSE CURVAL:=PAGESOFAR[M];
  1772  CURVALLEVEL:=1;END{:421};
  1773  84:{423:}BEGIN IF EQTB[3412].HH.RH=0 THEN CURVAL:=0 ELSE CURVAL:=MEM[
  1774  EQTB[3412].HH.RH].HH.LH;CURVALLEVEL:=0;END{:423};
  1775  83:{420:}BEGIN SCANEIGHTBITINT;
  1776  IF EQTB[3678+CURVAL].HH.RH=0 THEN CURVAL:=0 ELSE CURVAL:=MEM[EQTB[3678+
  1777  CURVAL].HH.RH+M].INT;CURVALLEVEL:=1;END{:420};
  1778  68,69:BEGIN CURVAL:=CURCHR;CURVALLEVEL:=0;END;
  1779  77:{425:}BEGIN FINDFONTDIMEN(FALSE);FONTINFO[FMEMPTR].INT:=0;
  1780  BEGIN CURVAL:=FONTINFO[CURVAL].INT;CURVALLEVEL:=1;END;END{:425};
  1781  78:{426:}BEGIN SCANFONTIDENT;
  1782  IF M=0 THEN BEGIN CURVAL:=HYPHENCHAR[CURVAL];CURVALLEVEL:=0;
  1783  END ELSE BEGIN CURVAL:=SKEWCHAR[CURVAL];CURVALLEVEL:=0;END;END{:426};
  1784  89:{427:}BEGIN SCANEIGHTBITINT;
  1785  CASE M OF 0:CURVAL:=EQTB[5318+CURVAL].INT;
  1786  1:CURVAL:=EQTB[5851+CURVAL].INT;2:CURVAL:=EQTB[2900+CURVAL].HH.RH;
  1787  3:CURVAL:=EQTB[3156+CURVAL].HH.RH;END;CURVALLEVEL:=M;END{:427};
  1788  70:{424:}IF CURCHR>2 THEN BEGIN IF CURCHR=3 THEN CURVAL:=LINE ELSE
  1789  CURVAL:=LASTBADNESS;CURVALLEVEL:=0;
  1790  END ELSE BEGIN IF CURCHR=2 THEN CURVAL:=0 ELSE CURVAL:=0;
  1791  CURVALLEVEL:=CURCHR;
  1792  IF NOT(CURLIST.TAILFIELD>=HIMEMMIN)AND(CURLIST.MODEFIELD<>0)THEN CASE
  1793  CURCHR OF 0:IF MEM[CURLIST.TAILFIELD].HH.B0=12 THEN CURVAL:=MEM[CURLIST.
  1794  TAILFIELD+1].INT;
  1795  1:IF MEM[CURLIST.TAILFIELD].HH.B0=11 THEN CURVAL:=MEM[CURLIST.TAILFIELD
  1796  +1].INT;
  1797  2:IF MEM[CURLIST.TAILFIELD].HH.B0=10 THEN BEGIN CURVAL:=MEM[CURLIST.
  1798  TAILFIELD+1].HH.LH;
  1799  IF MEM[CURLIST.TAILFIELD].HH.B1=99 THEN CURVALLEVEL:=3;END;
  1800  END ELSE IF(CURLIST.MODEFIELD=1)AND(CURLIST.TAILFIELD=CURLIST.HEADFIELD)
  1801  THEN CASE CURCHR OF 0:CURVAL:=LASTPENALTY;1:CURVAL:=LASTKERN;
  1802  2:IF LASTGLUE<>65535 THEN CURVAL:=LASTGLUE;END;END{:424};
  1803  ELSE{428:}BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(685);END;
  1804  PRINTCMDCHR(CURCMD,CURCHR);PRINT(686);PRINTESC(537);BEGIN HELPPTR:=1;
  1805  HELPLINE[0]:=684;END;ERROR;IF LEVEL<>5 THEN BEGIN CURVAL:=0;
  1806  CURVALLEVEL:=1;END ELSE BEGIN CURVAL:=0;CURVALLEVEL:=0;END;END{:428}END;
  1807  WHILE CURVALLEVEL>LEVEL DO{429:}BEGIN IF CURVALLEVEL=2 THEN CURVAL:=MEM[
  1808  CURVAL+1].INT ELSE IF CURVALLEVEL=3 THEN MUERROR;
  1809  CURVALLEVEL:=CURVALLEVEL-1;END{:429};
  1810  {430:}IF NEGATIVE THEN IF CURVALLEVEL>=2 THEN BEGIN CURVAL:=NEWSPEC(
  1811  CURVAL);{431:}BEGIN MEM[CURVAL+1].INT:=-MEM[CURVAL+1].INT;
  1812  MEM[CURVAL+2].INT:=-MEM[CURVAL+2].INT;
  1813  MEM[CURVAL+3].INT:=-MEM[CURVAL+3].INT;END{:431};
  1814  END ELSE CURVAL:=-CURVAL ELSE IF(CURVALLEVEL>=2)AND(CURVALLEVEL<=3)THEN
  1815  MEM[CURVAL].HH.RH:=MEM[CURVAL].HH.RH+1{:430};END;
  1816  {:413}{440:}PROCEDURE SCANINT;LABEL 30;VAR NEGATIVE:BOOLEAN;M:INTEGER;
  1817  D:SMALLNUMBER;VACUOUS:BOOLEAN;OKSOFAR:BOOLEAN;BEGIN RADIX:=0;
  1818  OKSOFAR:=TRUE;{441:}NEGATIVE:=FALSE;REPEAT{406:}REPEAT GETXTOKEN;
  1819  UNTIL CURCMD<>10{:406};IF CURTOK=3117 THEN BEGIN NEGATIVE:=NOT NEGATIVE;
  1820  CURTOK:=3115;END;UNTIL CURTOK<>3115{:441};
  1821  IF CURTOK=3168 THEN{442:}BEGIN GETTOKEN;
  1822  IF CURTOK<4095 THEN BEGIN CURVAL:=CURCHR;
  1823  IF CURCMD<=2 THEN IF CURCMD=2 THEN ALIGNSTATE:=ALIGNSTATE+1 ELSE
  1824  ALIGNSTATE:=ALIGNSTATE-1;
  1825  END ELSE IF CURTOK<4352 THEN CURVAL:=CURTOK-4096 ELSE CURVAL:=CURTOK
  1826  -4352;IF CURVAL>255 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  1827  PRINT(698);END;BEGIN HELPPTR:=2;HELPLINE[1]:=699;HELPLINE[0]:=700;END;
  1828  CURVAL:=48;BACKERROR;END ELSE{443:}BEGIN GETXTOKEN;
  1829  IF CURCMD<>10 THEN BACKINPUT;END{:443};
  1830  END{:442}ELSE IF(CURCMD>=68)AND(CURCMD<=89)THEN SCANSOMETHINGINTERNAL(0,
  1831  FALSE)ELSE{444:}BEGIN RADIX:=10;M:=214748364;
  1832  IF CURTOK=3111 THEN BEGIN RADIX:=8;M:=268435456;GETXTOKEN;
  1833  END ELSE IF CURTOK=3106 THEN BEGIN RADIX:=16;M:=134217728;GETXTOKEN;END;
  1834  VACUOUS:=TRUE;CURVAL:=0;
  1835  {445:}WHILE TRUE DO BEGIN IF(CURTOK<3120+RADIX)AND(CURTOK>=3120)AND(
  1836  CURTOK<=3129)THEN D:=CURTOK-3120 ELSE IF RADIX=16 THEN IF(CURTOK<=2886)
  1837  AND(CURTOK>=2881)THEN D:=CURTOK-2871 ELSE IF(CURTOK<=3142)AND(CURTOK>=
  1838  3137)THEN D:=CURTOK-3127 ELSE GOTO 30 ELSE GOTO 30;VACUOUS:=FALSE;
  1839  IF(CURVAL>=M)AND((CURVAL>M)OR(D>7)OR(RADIX<>10))THEN BEGIN IF OKSOFAR
  1840  THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(701);END;
  1841  BEGIN HELPPTR:=2;HELPLINE[1]:=702;HELPLINE[0]:=703;END;ERROR;
  1842  CURVAL:=2147483647;OKSOFAR:=FALSE;END;END ELSE CURVAL:=CURVAL*RADIX+D;
  1843  GETXTOKEN;END;30:{:445};
  1844  IF VACUOUS THEN{446:}BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  1845  PRINT(664);END;BEGIN HELPPTR:=3;HELPLINE[2]:=665;HELPLINE[1]:=666;
  1846  HELPLINE[0]:=667;END;BACKERROR;
  1847  END{:446}ELSE IF CURCMD<>10 THEN BACKINPUT;END{:444};
  1848  IF NEGATIVE THEN CURVAL:=-CURVAL;END;
  1849  {:440}{448:}PROCEDURE SCANDIMEN(MU,INF,SHORTCUT:BOOLEAN);
  1850  LABEL 30,31,32,40,45,88,89;VAR NEGATIVE:BOOLEAN;F:INTEGER;
  1851  {450:}NUM,DENOM:1..65536;K,KK:SMALLNUMBER;P,Q:HALFWORD;V:SCALED;
  1852  SAVECURVAL:INTEGER;{:450}BEGIN F:=0;ARITHERROR:=FALSE;CURORDER:=0;
  1853  NEGATIVE:=FALSE;IF NOT SHORTCUT THEN BEGIN{441:}NEGATIVE:=FALSE;
  1854  REPEAT{406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
  1855  IF CURTOK=3117 THEN BEGIN NEGATIVE:=NOT NEGATIVE;CURTOK:=3115;END;
  1856  UNTIL CURTOK<>3115{:441};
  1857  IF(CURCMD>=68)AND(CURCMD<=89)THEN{449:}IF MU THEN BEGIN
  1858  SCANSOMETHINGINTERNAL(3,FALSE);
  1859  {451:}IF CURVALLEVEL>=2 THEN BEGIN V:=MEM[CURVAL+1].INT;
  1860  DELETEGLUEREF(CURVAL);CURVAL:=V;END{:451};IF CURVALLEVEL=3 THEN GOTO 89;
  1861  IF CURVALLEVEL<>0 THEN MUERROR;
  1862  END ELSE BEGIN SCANSOMETHINGINTERNAL(1,FALSE);
  1863  IF CURVALLEVEL=1 THEN GOTO 89;END{:449}ELSE BEGIN BACKINPUT;
  1864  IF CURTOK=3116 THEN CURTOK:=3118;
  1865  IF CURTOK<>3118 THEN SCANINT ELSE BEGIN RADIX:=10;CURVAL:=0;END;
  1866  IF CURTOK=3116 THEN CURTOK:=3118;
  1867  IF(RADIX=10)AND(CURTOK=3118)THEN{452:}BEGIN K:=0;P:=0;GETTOKEN;
  1868  WHILE TRUE DO BEGIN GETXTOKEN;
  1869  IF(CURTOK>3129)OR(CURTOK<3120)THEN GOTO 31;
  1870  IF K<17 THEN BEGIN Q:=GETAVAIL;MEM[Q].HH.RH:=P;
  1871  MEM[Q].HH.LH:=CURTOK-3120;P:=Q;K:=K+1;END;END;
  1872  31:FOR KK:=K DOWNTO 1 DO BEGIN DIG[KK-1]:=MEM[P].HH.LH;Q:=P;
  1873  P:=MEM[P].HH.RH;BEGIN MEM[Q].HH.RH:=AVAIL;AVAIL:=Q;{DYNUSED:=DYNUSED-1;}
  1874  END;END;F:=ROUNDDECIMALS(K);IF CURCMD<>10 THEN BACKINPUT;END{:452};END;
  1875  END;IF CURVAL<0 THEN BEGIN NEGATIVE:=NOT NEGATIVE;CURVAL:=-CURVAL;END;
  1876  {453:}IF INF THEN{454:}IF SCANKEYWORD(311)THEN BEGIN CURORDER:=1;
  1877  WHILE SCANKEYWORD(108)DO BEGIN IF CURORDER=3 THEN BEGIN BEGIN IF
  1878  INTERACTION=3 THEN;PRINTNL(262);PRINT(705);END;PRINT(706);
  1879  BEGIN HELPPTR:=1;HELPLINE[0]:=707;END;ERROR;
  1880  END ELSE CURORDER:=CURORDER+1;END;GOTO 88;END{:454};
  1881  {455:}SAVECURVAL:=CURVAL;{406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
  1882  IF(CURCMD<68)OR(CURCMD>89)THEN BACKINPUT ELSE BEGIN IF MU THEN BEGIN
  1883  SCANSOMETHINGINTERNAL(3,FALSE);
  1884  {451:}IF CURVALLEVEL>=2 THEN BEGIN V:=MEM[CURVAL+1].INT;
  1885  DELETEGLUEREF(CURVAL);CURVAL:=V;END{:451};
  1886  IF CURVALLEVEL<>3 THEN MUERROR;END ELSE SCANSOMETHINGINTERNAL(1,FALSE);
  1887  V:=CURVAL;GOTO 40;END;IF MU THEN GOTO 45;
  1888  IF SCANKEYWORD(708)THEN V:=({558:}FONTINFO[6+PARAMBASE[EQTB[3934].HH.RH]
  1889  ].INT{:558})ELSE IF SCANKEYWORD(709)THEN V:=({559:}FONTINFO[5+PARAMBASE[
  1890  EQTB[3934].HH.RH]].INT{:559})ELSE GOTO 45;{443:}BEGIN GETXTOKEN;
  1891  IF CURCMD<>10 THEN BACKINPUT;END{:443};
  1892  40:CURVAL:=MULTANDADD(SAVECURVAL,V,XNOVERD(V,F,65536),1073741823);
  1893  GOTO 89;45:{:455};
  1894  IF MU THEN{456:}IF SCANKEYWORD(337)THEN GOTO 88 ELSE BEGIN BEGIN IF
  1895  INTERACTION=3 THEN;PRINTNL(262);PRINT(705);END;PRINT(710);
  1896  BEGIN HELPPTR:=4;HELPLINE[3]:=711;HELPLINE[2]:=712;HELPLINE[1]:=713;
  1897  HELPLINE[0]:=714;END;ERROR;GOTO 88;END{:456};
  1898  IF SCANKEYWORD(704)THEN{457:}BEGIN PREPAREMAG;
  1899  IF EQTB[5280].INT<>1000 THEN BEGIN CURVAL:=XNOVERD(CURVAL,1000,EQTB[5280
  1900  ].INT);F:=(1000*F+65536*REMAINDER)DIV EQTB[5280].INT;
  1901  CURVAL:=CURVAL+(F DIV 65536);F:=F MOD 65536;END;END{:457};
  1902  IF SCANKEYWORD(397)THEN GOTO 88;
  1903  {458:}IF SCANKEYWORD(715)THEN BEGIN NUM:=7227;DENOM:=100;
  1904  END ELSE IF SCANKEYWORD(716)THEN BEGIN NUM:=12;DENOM:=1;
  1905  END ELSE IF SCANKEYWORD(717)THEN BEGIN NUM:=7227;DENOM:=254;
  1906  END ELSE IF SCANKEYWORD(718)THEN BEGIN NUM:=7227;DENOM:=2540;
  1907  END ELSE IF SCANKEYWORD(719)THEN BEGIN NUM:=7227;DENOM:=7200;
  1908  END ELSE IF SCANKEYWORD(720)THEN BEGIN NUM:=1238;DENOM:=1157;
  1909  END ELSE IF SCANKEYWORD(721)THEN BEGIN NUM:=14856;DENOM:=1157;
  1910  END ELSE IF SCANKEYWORD(722)THEN GOTO 30 ELSE{459:}BEGIN BEGIN IF
  1911  INTERACTION=3 THEN;PRINTNL(262);PRINT(705);END;PRINT(723);
  1912  BEGIN HELPPTR:=6;HELPLINE[5]:=724;HELPLINE[4]:=725;HELPLINE[3]:=726;
  1913  HELPLINE[2]:=712;HELPLINE[1]:=713;HELPLINE[0]:=714;END;ERROR;GOTO 32;
  1914  END{:459};CURVAL:=XNOVERD(CURVAL,NUM,DENOM);
  1915  F:=(NUM*F+65536*REMAINDER)DIV DENOM;CURVAL:=CURVAL+(F DIV 65536);
  1916  F:=F MOD 65536;32:{:458};
  1917  88:IF CURVAL>=16384 THEN ARITHERROR:=TRUE ELSE CURVAL:=CURVAL*65536+F;
  1918  30:{:453};{443:}BEGIN GETXTOKEN;IF CURCMD<>10 THEN BACKINPUT;END{:443};
  1919  89:IF ARITHERROR OR(ABS(CURVAL)>=1073741824)THEN{460:}BEGIN BEGIN IF
  1920  INTERACTION=3 THEN;PRINTNL(262);PRINT(727);END;BEGIN HELPPTR:=2;
  1921  HELPLINE[1]:=728;HELPLINE[0]:=729;END;ERROR;CURVAL:=1073741823;
  1922  ARITHERROR:=FALSE;END{:460};IF NEGATIVE THEN CURVAL:=-CURVAL;END;
  1923  {:448}{461:}PROCEDURE SCANGLUE(LEVEL:SMALLNUMBER);LABEL 10;
  1924  VAR NEGATIVE:BOOLEAN;Q:HALFWORD;MU:BOOLEAN;BEGIN MU:=(LEVEL=3);
  1925  {441:}NEGATIVE:=FALSE;REPEAT{406:}REPEAT GETXTOKEN;
  1926  UNTIL CURCMD<>10{:406};IF CURTOK=3117 THEN BEGIN NEGATIVE:=NOT NEGATIVE;
  1927  CURTOK:=3115;END;UNTIL CURTOK<>3115{:441};
  1928  IF(CURCMD>=68)AND(CURCMD<=89)THEN BEGIN SCANSOMETHINGINTERNAL(LEVEL,
  1929  NEGATIVE);
  1930  IF CURVALLEVEL>=2 THEN BEGIN IF CURVALLEVEL<>LEVEL THEN MUERROR;GOTO 10;
  1931  END;IF CURVALLEVEL=0 THEN SCANDIMEN(MU,FALSE,TRUE)ELSE IF LEVEL=3 THEN
  1932  MUERROR;END ELSE BEGIN BACKINPUT;SCANDIMEN(MU,FALSE,FALSE);
  1933  IF NEGATIVE THEN CURVAL:=-CURVAL;END;{462:}Q:=NEWSPEC(0);
  1934  MEM[Q+1].INT:=CURVAL;
  1935  IF SCANKEYWORD(730)THEN BEGIN SCANDIMEN(MU,TRUE,FALSE);
  1936  MEM[Q+2].INT:=CURVAL;MEM[Q].HH.B0:=CURORDER;END;
  1937  IF SCANKEYWORD(731)THEN BEGIN SCANDIMEN(MU,TRUE,FALSE);
  1938  MEM[Q+3].INT:=CURVAL;MEM[Q].HH.B1:=CURORDER;END;CURVAL:=Q{:462};10:END;
  1939  {:461}{463:}FUNCTION SCANRULESPEC:HALFWORD;LABEL 21;VAR Q:HALFWORD;
  1940  BEGIN Q:=NEWRULE;
  1941  IF CURCMD=35 THEN MEM[Q+1].INT:=26214 ELSE BEGIN MEM[Q+3].INT:=26214;
  1942  MEM[Q+2].INT:=0;END;
  1943  21:IF SCANKEYWORD(732)THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
  1944  MEM[Q+1].INT:=CURVAL;GOTO 21;END;
  1945  IF SCANKEYWORD(733)THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
  1946  MEM[Q+3].INT:=CURVAL;GOTO 21;END;
  1947  IF SCANKEYWORD(734)THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
  1948  MEM[Q+2].INT:=CURVAL;GOTO 21;END;SCANRULESPEC:=Q;END;
  1949  {:463}{464:}FUNCTION STRTOKS(B:POOLPOINTER):HALFWORD;VAR P:HALFWORD;
  1950  Q:HALFWORD;T:HALFWORD;K:POOLPOINTER;
  1951  BEGIN BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(257,POOLSIZE-INITPOOLPTR
  1952  );END;P:=29997;MEM[P].HH.RH:=0;K:=B;
  1953  WHILE K<POOLPTR DO BEGIN T:=STRPOOL[K];
  1954  IF T=32 THEN T:=2592 ELSE T:=3072+T;BEGIN BEGIN Q:=AVAIL;
  1955  IF Q=0 THEN Q:=GETAVAIL ELSE BEGIN AVAIL:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;
  1956  {DYNUSED:=DYNUSED+1;}END;END;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=T;P:=Q;END;
  1957  K:=K+1;END;POOLPTR:=B;STRTOKS:=P;END;
  1958  {:464}{465:}FUNCTION THETOKS:HALFWORD;VAR OLDSETTING:0..21;
  1959  P,Q,R:HALFWORD;B:POOLPOINTER;BEGIN GETXTOKEN;
  1960  SCANSOMETHINGINTERNAL(5,FALSE);
  1961  IF CURVALLEVEL>=4 THEN{466:}BEGIN P:=29997;MEM[P].HH.RH:=0;
  1962  IF CURVALLEVEL=4 THEN BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
  1963  MEM[Q].HH.LH:=4095+CURVAL;P:=Q;
  1964  END ELSE IF CURVAL<>0 THEN BEGIN R:=MEM[CURVAL].HH.RH;
  1965  WHILE R<>0 DO BEGIN BEGIN BEGIN Q:=AVAIL;
  1966  IF Q=0 THEN Q:=GETAVAIL ELSE BEGIN AVAIL:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;
  1967  {DYNUSED:=DYNUSED+1;}END;END;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=MEM[R].HH.LH;
  1968  P:=Q;END;R:=MEM[R].HH.RH;END;END;THETOKS:=P;
  1969  END{:466}ELSE BEGIN OLDSETTING:=SELECTOR;SELECTOR:=21;B:=POOLPTR;
  1970  CASE CURVALLEVEL OF 0:PRINTINT(CURVAL);1:BEGIN PRINTSCALED(CURVAL);
  1971  PRINT(397);END;2:BEGIN PRINTSPEC(CURVAL,397);DELETEGLUEREF(CURVAL);END;
  1972  3:BEGIN PRINTSPEC(CURVAL,337);DELETEGLUEREF(CURVAL);END;END;
  1973  SELECTOR:=OLDSETTING;THETOKS:=STRTOKS(B);END;END;
  1974  {:465}{467:}PROCEDURE INSTHETOKS;BEGIN MEM[29988].HH.RH:=THETOKS;
  1975  BEGINTOKENLIST(MEM[29997].HH.RH,4);END;{:467}{470:}PROCEDURE CONVTOKS;
  1976  VAR OLDSETTING:0..21;C:0..5;SAVESCANNERSTATUS:SMALLNUMBER;B:POOLPOINTER;
  1977  BEGIN C:=CURCHR;{471:}CASE C OF 0,1:SCANINT;
  1978  2,3:BEGIN SAVESCANNERSTATUS:=SCANNERSTATUS;SCANNERSTATUS:=0;GETTOKEN;
  1979  SCANNERSTATUS:=SAVESCANNERSTATUS;END;4:SCANFONTIDENT;
  1980  5:IF JOBNAME=0 THEN OPENLOGFILE;END{:471};OLDSETTING:=SELECTOR;
  1981  SELECTOR:=21;B:=POOLPTR;{472:}CASE C OF 0:PRINTINT(CURVAL);
  1982  1:PRINTROMANINT(CURVAL);
  1983  2:IF CURCS<>0 THEN SPRINTCS(CURCS)ELSE PRINTCHAR(CURCHR);3:PRINTMEANING;
  1984  4:BEGIN PRINT(FONTNAME[CURVAL]);
  1985  IF FONTSIZE[CURVAL]<>FONTDSIZE[CURVAL]THEN BEGIN PRINT(741);
  1986  PRINTSCALED(FONTSIZE[CURVAL]);PRINT(397);END;END;5:PRINT(JOBNAME);
  1987  END{:472};SELECTOR:=OLDSETTING;MEM[29988].HH.RH:=STRTOKS(B);
  1988  BEGINTOKENLIST(MEM[29997].HH.RH,4);END;
  1989  {:470}{473:}FUNCTION SCANTOKS(MACRODEF,XPAND:BOOLEAN):HALFWORD;
  1990  LABEL 40,22,30,31,32;VAR T:HALFWORD;S:HALFWORD;P:HALFWORD;Q:HALFWORD;
  1991  UNBALANCE:HALFWORD;HASHBRACE:HALFWORD;
  1992  BEGIN IF MACRODEF THEN SCANNERSTATUS:=2 ELSE SCANNERSTATUS:=5;
  1993  WARNINGINDEX:=CURCS;DEFREF:=GETAVAIL;MEM[DEFREF].HH.LH:=0;P:=DEFREF;
  1994  HASHBRACE:=0;T:=3120;
  1995  IF MACRODEF THEN{474:}BEGIN WHILE TRUE DO BEGIN 22:GETTOKEN;
  1996  IF CURTOK<768 THEN GOTO 31;IF CURCMD=6 THEN{476:}BEGIN S:=3328+CURCHR;
  1997  GETTOKEN;IF CURTOK<512 THEN BEGIN HASHBRACE:=CURTOK;BEGIN Q:=GETAVAIL;
  1998  MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;P:=Q;END;BEGIN Q:=GETAVAIL;
  1999  MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=3584;P:=Q;END;GOTO 30;END;
  2000  IF T=3129 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  2001  PRINT(744);END;BEGIN HELPPTR:=2;HELPLINE[1]:=745;HELPLINE[0]:=746;END;
  2002  ERROR;GOTO 22;END ELSE BEGIN T:=T+1;
  2003  IF CURTOK<>T THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  2004  PRINT(747);END;BEGIN HELPPTR:=2;HELPLINE[1]:=748;HELPLINE[0]:=749;END;
  2005  BACKERROR;END;CURTOK:=S;END;END{:476};BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
  2006  MEM[Q].HH.LH:=CURTOK;P:=Q;END;END;31:BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
  2007  MEM[Q].HH.LH:=3584;P:=Q;END;
  2008  IF CURCMD=2 THEN{475:}BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  2009  PRINT(657);END;ALIGNSTATE:=ALIGNSTATE+1;BEGIN HELPPTR:=2;
  2010  HELPLINE[1]:=742;HELPLINE[0]:=743;END;ERROR;GOTO 40;END{:475};
  2011  30:END{:474}ELSE SCANLEFTBRACE;{477:}UNBALANCE:=1;
  2012  WHILE TRUE DO BEGIN IF XPAND THEN{478:}BEGIN WHILE TRUE DO BEGIN GETNEXT
  2013  ;IF CURCMD<=100 THEN GOTO 32;
  2014  IF CURCMD<>109 THEN EXPAND ELSE BEGIN Q:=THETOKS;
  2015  IF MEM[29997].HH.RH<>0 THEN BEGIN MEM[P].HH.RH:=MEM[29997].HH.RH;P:=Q;
  2016  END;END;END;32:XTOKEN END{:478}ELSE GETTOKEN;
  2017  IF CURTOK<768 THEN IF CURCMD<2 THEN UNBALANCE:=UNBALANCE+1 ELSE BEGIN
  2018  UNBALANCE:=UNBALANCE-1;IF UNBALANCE=0 THEN GOTO 40;
  2019  END ELSE IF CURCMD=6 THEN IF MACRODEF THEN{479:}BEGIN S:=CURTOK;
  2020  IF XPAND THEN GETXTOKEN ELSE GETTOKEN;
  2021  IF CURCMD<>6 THEN IF(CURTOK<=3120)OR(CURTOK>T)THEN BEGIN BEGIN IF
  2022  INTERACTION=3 THEN;PRINTNL(262);PRINT(750);END;SPRINTCS(WARNINGINDEX);
  2023  BEGIN HELPPTR:=3;HELPLINE[2]:=751;HELPLINE[1]:=752;HELPLINE[0]:=753;END;
  2024  BACKERROR;CURTOK:=S;END ELSE CURTOK:=1232+CURCHR;END{:479};
  2025  BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;P:=Q;END;
  2026  END{:477};40:SCANNERSTATUS:=0;IF HASHBRACE<>0 THEN BEGIN Q:=GETAVAIL;
  2027  MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=HASHBRACE;P:=Q;END;SCANTOKS:=P;END;
  2028  {:473}{482:}PROCEDURE READTOKS(N:INTEGER;R:HALFWORD);LABEL 30;
  2029  VAR P:HALFWORD;Q:HALFWORD;S:INTEGER;M:SMALLNUMBER;
  2030  BEGIN SCANNERSTATUS:=2;WARNINGINDEX:=R;DEFREF:=GETAVAIL;
  2031  MEM[DEFREF].HH.LH:=0;P:=DEFREF;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
  2032  MEM[Q].HH.LH:=3584;P:=Q;END;IF(N<0)OR(N>15)THEN M:=16 ELSE M:=N;
  2033  S:=ALIGNSTATE;ALIGNSTATE:=1000000;REPEAT{483:}BEGINFILEREADING;
  2034  CURINPUT.NAMEFIELD:=M+1;
  2035  IF READOPEN[M]=2 THEN{484:}IF INTERACTION>1 THEN IF N<0 THEN BEGIN;
  2036  PRINT(338);TERMINPUT;END ELSE BEGIN;PRINTLN;SPRINTCS(R);BEGIN;PRINT(61);
  2037  TERMINPUT;END;N:=-1;
  2038  END ELSE FATALERROR(754){:484}ELSE IF READOPEN[M]=1 THEN{485:}IF INPUTLN
  2039  (READFILE[M],FALSE)THEN READOPEN[M]:=0 ELSE BEGIN ACLOSE(READFILE[M]);
  2040  READOPEN[M]:=2;
  2041  END{:485}ELSE{486:}BEGIN IF NOT INPUTLN(READFILE[M],TRUE)THEN BEGIN
  2042  ACLOSE(READFILE[M]);READOPEN[M]:=2;
  2043  IF ALIGNSTATE<>1000000 THEN BEGIN RUNAWAY;BEGIN IF INTERACTION=3 THEN;
  2044  PRINTNL(262);PRINT(755);END;PRINTESC(534);BEGIN HELPPTR:=1;
  2045  HELPLINE[0]:=756;END;ALIGNSTATE:=1000000;CURINPUT.LIMITFIELD:=0;ERROR;
  2046  END;END;END{:486};CURINPUT.LIMITFIELD:=LAST;
  2047  IF(EQTB[5311].INT<0)OR(EQTB[5311].INT>255)THEN CURINPUT.LIMITFIELD:=
  2048  CURINPUT.LIMITFIELD-1 ELSE BUFFER[CURINPUT.LIMITFIELD]:=EQTB[5311].INT;
  2049  FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
  2050  CURINPUT.STATEFIELD:=33;WHILE TRUE DO BEGIN GETTOKEN;
  2051  IF CURTOK=0 THEN GOTO 30;
  2052  IF ALIGNSTATE<1000000 THEN BEGIN REPEAT GETTOKEN;UNTIL CURTOK=0;
  2053  ALIGNSTATE:=1000000;GOTO 30;END;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
  2054  MEM[Q].HH.LH:=CURTOK;P:=Q;END;END;30:ENDFILEREADING{:483};
  2055  UNTIL ALIGNSTATE=1000000;CURVAL:=DEFREF;SCANNERSTATUS:=0;ALIGNSTATE:=S;
  2056  END;{:482}{494:}PROCEDURE PASSTEXT;LABEL 30;VAR L:INTEGER;
  2057  SAVESCANNERSTATUS:SMALLNUMBER;BEGIN SAVESCANNERSTATUS:=SCANNERSTATUS;
  2058  SCANNERSTATUS:=1;L:=0;SKIPLINE:=LINE;WHILE TRUE DO BEGIN GETNEXT;
  2059  IF CURCMD=106 THEN BEGIN IF L=0 THEN GOTO 30;IF CURCHR=2 THEN L:=L-1;
  2060  END ELSE IF CURCMD=105 THEN L:=L+1;END;
  2061  30:SCANNERSTATUS:=SAVESCANNERSTATUS;END;
  2062  {:494}{497:}PROCEDURE CHANGEIFLIMIT(L:SMALLNUMBER;P:HALFWORD);LABEL 10;
  2063  VAR Q:HALFWORD;BEGIN IF P=CONDPTR THEN IFLIMIT:=L ELSE BEGIN Q:=CONDPTR;
  2064  WHILE TRUE DO BEGIN IF Q=0 THEN CONFUSION(757);
  2065  IF MEM[Q].HH.RH=P THEN BEGIN MEM[Q].HH.B0:=L;GOTO 10;END;
  2066  Q:=MEM[Q].HH.RH;END;END;10:END;{:497}{498:}PROCEDURE CONDITIONAL;
  2067  LABEL 10,50;VAR B:BOOLEAN;R:60..62;M,N:INTEGER;P,Q:HALFWORD;
  2068  SAVESCANNERSTATUS:SMALLNUMBER;SAVECONDPTR:HALFWORD;THISIF:SMALLNUMBER;
  2069  BEGIN{495:}BEGIN P:=GETNODE(2);MEM[P].HH.RH:=CONDPTR;
  2070  MEM[P].HH.B0:=IFLIMIT;MEM[P].HH.B1:=CURIF;MEM[P+1].INT:=IFLINE;
  2071  CONDPTR:=P;CURIF:=CURCHR;IFLIMIT:=1;IFLINE:=LINE;END{:495};
  2072  SAVECONDPTR:=CONDPTR;THISIF:=CURCHR;
  2073  {501:}CASE THISIF OF 0,1:{506:}BEGIN BEGIN GETXTOKEN;
  2074  IF CURCMD=0 THEN IF CURCHR=257 THEN BEGIN CURCMD:=13;
  2075  CURCHR:=CURTOK-4096;END;END;IF(CURCMD>13)OR(CURCHR>255)THEN BEGIN M:=0;
  2076  N:=256;END ELSE BEGIN M:=CURCMD;N:=CURCHR;END;BEGIN GETXTOKEN;
  2077  IF CURCMD=0 THEN IF CURCHR=257 THEN BEGIN CURCMD:=13;
  2078  CURCHR:=CURTOK-4096;END;END;
  2079  IF(CURCMD>13)OR(CURCHR>255)THEN BEGIN CURCMD:=0;CURCHR:=256;END;
  2080  IF THISIF=0 THEN B:=(N=CURCHR)ELSE B:=(M=CURCMD);END{:506};
  2081  2,3:{503:}BEGIN IF THISIF=2 THEN SCANINT ELSE SCANDIMEN(FALSE,FALSE,
  2082  FALSE);N:=CURVAL;{406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
  2083  IF(CURTOK>=3132)AND(CURTOK<=3134)THEN R:=CURTOK-3072 ELSE BEGIN BEGIN IF
  2084  INTERACTION=3 THEN;PRINTNL(262);PRINT(781);END;PRINTCMDCHR(105,THISIF);
  2085  BEGIN HELPPTR:=1;HELPLINE[0]:=782;END;BACKERROR;R:=61;END;
  2086  IF THISIF=2 THEN SCANINT ELSE SCANDIMEN(FALSE,FALSE,FALSE);
  2087  CASE R OF 60:B:=(N<CURVAL);61:B:=(N=CURVAL);62:B:=(N>CURVAL);END;
  2088  END{:503};4:{504:}BEGIN SCANINT;B:=ODD(CURVAL);END{:504};
  2089  5:B:=(ABS(CURLIST.MODEFIELD)=1);6:B:=(ABS(CURLIST.MODEFIELD)=102);
  2090  7:B:=(ABS(CURLIST.MODEFIELD)=203);8:B:=(CURLIST.MODEFIELD<0);
  2091  9,10,11:{505:}BEGIN SCANEIGHTBITINT;P:=EQTB[3678+CURVAL].HH.RH;
  2092  IF THISIF=9 THEN B:=(P=0)ELSE IF P=0 THEN B:=FALSE ELSE IF THISIF=10
  2093  THEN B:=(MEM[P].HH.B0=0)ELSE B:=(MEM[P].HH.B0=1);END{:505};
  2094  12:{507:}BEGIN SAVESCANNERSTATUS:=SCANNERSTATUS;SCANNERSTATUS:=0;
  2095  GETNEXT;N:=CURCS;P:=CURCMD;Q:=CURCHR;GETNEXT;
  2096  IF CURCMD<>P THEN B:=FALSE ELSE IF CURCMD<111 THEN B:=(CURCHR=Q)ELSE
  2097  {508:}BEGIN P:=MEM[CURCHR].HH.RH;Q:=MEM[EQTB[N].HH.RH].HH.RH;
  2098  IF P=Q THEN B:=TRUE ELSE BEGIN WHILE(P<>0)AND(Q<>0)DO IF MEM[P].HH.LH<>
  2099  MEM[Q].HH.LH THEN P:=0 ELSE BEGIN P:=MEM[P].HH.RH;Q:=MEM[Q].HH.RH;END;
  2100  B:=((P=0)AND(Q=0));END;END{:508};SCANNERSTATUS:=SAVESCANNERSTATUS;
  2101  END{:507};13:BEGIN SCANFOURBITINT;B:=(READOPEN[CURVAL]=2);END;
  2102  14:B:=TRUE;15:B:=FALSE;16:{509:}BEGIN SCANINT;N:=CURVAL;
  2103  IF EQTB[5299].INT>1 THEN BEGIN BEGINDIAGNOSTIC;PRINT(783);PRINTINT(N);
  2104  PRINTCHAR(125);ENDDIAGNOSTIC(FALSE);END;WHILE N<>0 DO BEGIN PASSTEXT;
  2105  IF CONDPTR=SAVECONDPTR THEN IF CURCHR=4 THEN N:=N-1 ELSE GOTO 50 ELSE IF
  2106  CURCHR=2 THEN{496:}BEGIN P:=CONDPTR;IFLINE:=MEM[P+1].INT;
  2107  CURIF:=MEM[P].HH.B1;IFLIMIT:=MEM[P].HH.B0;CONDPTR:=MEM[P].HH.RH;
  2108  FREENODE(P,2);END{:496};END;CHANGEIFLIMIT(4,SAVECONDPTR);GOTO 10;
  2109  END{:509};END{:501};IF EQTB[5299].INT>1 THEN{502:}BEGIN BEGINDIAGNOSTIC;
  2110  IF B THEN PRINT(779)ELSE PRINT(780);ENDDIAGNOSTIC(FALSE);END{:502};
  2111  IF B THEN BEGIN CHANGEIFLIMIT(3,SAVECONDPTR);GOTO 10;END;
  2112  {500:}WHILE TRUE DO BEGIN PASSTEXT;
  2113  IF CONDPTR=SAVECONDPTR THEN BEGIN IF CURCHR<>4 THEN GOTO 50;
  2114  BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(777);END;PRINTESC(775);
  2115  BEGIN HELPPTR:=1;HELPLINE[0]:=778;END;ERROR;
  2116  END ELSE IF CURCHR=2 THEN{496:}BEGIN P:=CONDPTR;IFLINE:=MEM[P+1].INT;
  2117  CURIF:=MEM[P].HH.B1;IFLIMIT:=MEM[P].HH.B0;CONDPTR:=MEM[P].HH.RH;
  2118  FREENODE(P,2);END{:496};END{:500};
  2119  50:IF CURCHR=2 THEN{496:}BEGIN P:=CONDPTR;IFLINE:=MEM[P+1].INT;
  2120  CURIF:=MEM[P].HH.B1;IFLIMIT:=MEM[P].HH.B0;CONDPTR:=MEM[P].HH.RH;
  2121  FREENODE(P,2);END{:496}ELSE IFLIMIT:=2;10:END;
  2122  {:498}{515:}PROCEDURE BEGINNAME;BEGIN AREADELIMITER:=0;EXTDELIMITER:=0;
  2123  END;{:515}{516:}FUNCTION MORENAME(C:ASCIICODE):BOOLEAN;
  2124  BEGIN IF C=32 THEN MORENAME:=FALSE ELSE BEGIN BEGIN IF POOLPTR+1>
  2125  POOLSIZE THEN OVERFLOW(257,POOLSIZE-INITPOOLPTR);END;
  2126  BEGIN STRPOOL[POOLPTR]:=C;POOLPTR:=POOLPTR+1;END;
  2127  IF(C=62)OR(C=58)THEN BEGIN AREADELIMITER:=(POOLPTR-STRSTART[STRPTR]);
  2128  EXTDELIMITER:=0;
  2129  END ELSE IF(C=46)AND(EXTDELIMITER=0)THEN EXTDELIMITER:=(POOLPTR-STRSTART
  2130  [STRPTR]);MORENAME:=TRUE;END;END;{:516}{517:}PROCEDURE ENDNAME;
  2131  BEGIN IF STRPTR+3>MAXSTRINGS THEN OVERFLOW(258,MAXSTRINGS-INITSTRPTR);
  2132  IF AREADELIMITER=0 THEN CURAREA:=338 ELSE BEGIN CURAREA:=STRPTR;
  2133  STRSTART[STRPTR+1]:=STRSTART[STRPTR]+AREADELIMITER;STRPTR:=STRPTR+1;END;
  2134  IF EXTDELIMITER=0 THEN BEGIN CUREXT:=338;CURNAME:=MAKESTRING;
  2135  END ELSE BEGIN CURNAME:=STRPTR;
  2136  STRSTART[STRPTR+1]:=STRSTART[STRPTR]+EXTDELIMITER-AREADELIMITER-1;
  2137  STRPTR:=STRPTR+1;CUREXT:=MAKESTRING;END;END;
  2138  {:517}{519:}PROCEDURE PACKFILENAME(N,A,E:STRNUMBER);VAR K:INTEGER;
  2139  C:ASCIICODE;J:POOLPOINTER;BEGIN K:=0;
  2140  FOR J:=STRSTART[A]TO STRSTART[A+1]-1 DO BEGIN C:=STRPOOL[J];K:=K+1;
  2141  IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
  2142  FOR J:=STRSTART[N]TO STRSTART[N+1]-1 DO BEGIN C:=STRPOOL[J];K:=K+1;
  2143  IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
  2144  FOR J:=STRSTART[E]TO STRSTART[E+1]-1 DO BEGIN C:=STRPOOL[J];K:=K+1;
  2145  IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
  2146  IF K<=FILENAMESIZE THEN NAMELENGTH:=K ELSE NAMELENGTH:=FILENAMESIZE;
  2147  FOR K:=NAMELENGTH+1 TO FILENAMESIZE DO NAMEOFFILE[K]:=' ';END;
  2148  {:519}{523:}PROCEDURE PACKBUFFEREDNAME(N:SMALLNUMBER;A,B:INTEGER);
  2149  VAR K:INTEGER;C:ASCIICODE;J:INTEGER;
  2150  BEGIN IF N+B-A+5>FILENAMESIZE THEN B:=A+FILENAMESIZE-N-5;K:=0;
  2151  FOR J:=1 TO N DO BEGIN C:=XORD[TEXFORMATDEFAULT[J]];K:=K+1;
  2152  IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
  2153  FOR J:=A TO B DO BEGIN C:=BUFFER[J];K:=K+1;
  2154  IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
  2155  FOR J:=17 TO 20 DO BEGIN C:=XORD[TEXFORMATDEFAULT[J]];K:=K+1;
  2156  IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
  2157  IF K<=FILENAMESIZE THEN NAMELENGTH:=K ELSE NAMELENGTH:=FILENAMESIZE;
  2158  FOR K:=NAMELENGTH+1 TO FILENAMESIZE DO NAMEOFFILE[K]:=' ';END;
  2159  {:523}{525:}FUNCTION MAKENAMESTRING:STRNUMBER;VAR K:1..FILENAMESIZE;
  2160  BEGIN IF(POOLPTR+NAMELENGTH>POOLSIZE)OR(STRPTR=MAXSTRINGS)OR((POOLPTR-
  2161  STRSTART[STRPTR])>0)THEN MAKENAMESTRING:=63 ELSE BEGIN FOR K:=1 TO
  2162  NAMELENGTH DO BEGIN STRPOOL[POOLPTR]:=XORD[NAMEOFFILE[K]];
  2163  POOLPTR:=POOLPTR+1;END;MAKENAMESTRING:=MAKESTRING;END;END;
  2164  FUNCTION AMAKENAMESTRING(VAR F:ALPHAFILE):STRNUMBER;
  2165  BEGIN AMAKENAMESTRING:=MAKENAMESTRING;END;
  2166  FUNCTION BMAKENAMESTRING(VAR F:BYTEFILE):STRNUMBER;
  2167  BEGIN BMAKENAMESTRING:=MAKENAMESTRING;END;
  2168  FUNCTION WMAKENAMESTRING(VAR F:WORDFILE):STRNUMBER;
  2169  BEGIN WMAKENAMESTRING:=MAKENAMESTRING;END;
  2170  {:525}{526:}PROCEDURE SCANFILENAME;LABEL 30;BEGIN NAMEINPROGRESS:=TRUE;
  2171  BEGINNAME;{406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
  2172  WHILE TRUE DO BEGIN IF(CURCMD>12)OR(CURCHR>255)THEN BEGIN BACKINPUT;
  2173  GOTO 30;END;IF NOT MORENAME(CURCHR)THEN GOTO 30;GETXTOKEN;END;
  2174  30:ENDNAME;NAMEINPROGRESS:=FALSE;END;
  2175  {:526}{529:}PROCEDURE PACKJOBNAME(S:STRNUMBER);BEGIN CURAREA:=338;
  2176  CUREXT:=S;CURNAME:=JOBNAME;PACKFILENAME(CURNAME,CURAREA,CUREXT);END;
  2177  {:529}{530:}PROCEDURE PROMPTFILENAME(S,E:STRNUMBER);LABEL 30;
  2178  VAR K:0..BUFSIZE;BEGIN IF INTERACTION=2 THEN;
  2179  IF S=787 THEN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(788);
  2180  END ELSE BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(789);END;
  2181  PRINTFILENAME(CURNAME,CURAREA,CUREXT);PRINT(790);
  2182  IF E=791 THEN SHOWCONTEXT;PRINTNL(792);PRINT(S);
  2183  IF INTERACTION<2 THEN FATALERROR(793);;BEGIN;PRINT(568);TERMINPUT;END;
  2184  {531:}BEGIN BEGINNAME;K:=FIRST;WHILE(BUFFER[K]=32)AND(K<LAST)DO K:=K+1;
  2185  WHILE TRUE DO BEGIN IF K=LAST THEN GOTO 30;
  2186  IF NOT MORENAME(BUFFER[K])THEN GOTO 30;K:=K+1;END;30:ENDNAME;END{:531};
  2187  IF CUREXT=338 THEN CUREXT:=E;PACKFILENAME(CURNAME,CURAREA,CUREXT);END;
  2188  {:530}{534:}PROCEDURE OPENLOGFILE;VAR OLDSETTING:0..21;K:0..BUFSIZE;
  2189  L:0..BUFSIZE;MONTHS:PACKED ARRAY[1..36]OF CHAR;
  2190  BEGIN OLDSETTING:=SELECTOR;IF JOBNAME=0 THEN JOBNAME:=796;
  2191  PACKJOBNAME(797);WHILE NOT AOPENOUT(LOGFILE)DO{535:}BEGIN SELECTOR:=17;
  2192  PROMPTFILENAME(799,797);END{:535};LOGNAME:=AMAKENAMESTRING(LOGFILE);
  2193  SELECTOR:=18;LOGOPENED:=TRUE;
  2194  {536:}BEGIN WRITE(LOGFILE,'This is TeX, Version 3.141592653');
  2195  SLOWPRINT(FORMATIDENT);PRINT(800);PRINTINT(SYSDAY);PRINTCHAR(32);
  2196  MONTHS:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
  2197  FOR K:=3*SYSMONTH-2 TO 3*SYSMONTH DO WRITE(LOGFILE,MONTHS[K]);
  2198  PRINTCHAR(32);PRINTINT(SYSYEAR);PRINTCHAR(32);PRINTTWO(SYSTIME DIV 60);
  2199  PRINTCHAR(58);PRINTTWO(SYSTIME MOD 60);END{:536};
  2200  INPUTSTACK[INPUTPTR]:=CURINPUT;PRINTNL(798);L:=INPUTSTACK[0].LIMITFIELD;
  2201  IF BUFFER[L]=EQTB[5311].INT THEN L:=L-1;
  2202  FOR K:=1 TO L DO PRINT(BUFFER[K]);PRINTLN;SELECTOR:=OLDSETTING+2;END;
  2203  {:534}{537:}PROCEDURE STARTINPUT;LABEL 30;BEGIN SCANFILENAME;
  2204  IF CUREXT=338 THEN CUREXT:=791;PACKFILENAME(CURNAME,CURAREA,CUREXT);
  2205  WHILE TRUE DO BEGIN BEGINFILEREADING;
  2206  IF AOPENIN(INPUTFILE[CURINPUT.INDEXFIELD])THEN GOTO 30;
  2207  IF CURAREA=338 THEN BEGIN PACKFILENAME(CURNAME,784,CUREXT);
  2208  IF AOPENIN(INPUTFILE[CURINPUT.INDEXFIELD])THEN GOTO 30;END;
  2209  ENDFILEREADING;PROMPTFILENAME(787,791);END;
  2210  30:CURINPUT.NAMEFIELD:=AMAKENAMESTRING(INPUTFILE[CURINPUT.INDEXFIELD]);
  2211  IF JOBNAME=0 THEN BEGIN JOBNAME:=CURNAME;OPENLOGFILE;END;
  2212  IF TERMOFFSET+(STRSTART[CURINPUT.NAMEFIELD+1]-STRSTART[CURINPUT.
  2213  NAMEFIELD])>MAXPRINTLINE-2 THEN PRINTLN ELSE IF(TERMOFFSET>0)OR(
  2214  FILEOFFSET>0)THEN PRINTCHAR(32);PRINTCHAR(40);OPENPARENS:=OPENPARENS+1;
  2215  SLOWPRINT(CURINPUT.NAMEFIELD);;CURINPUT.STATEFIELD:=33;
  2216  IF CURINPUT.NAMEFIELD=STRPTR-1 THEN BEGIN BEGIN STRPTR:=STRPTR-1;
  2217  POOLPTR:=STRSTART[STRPTR];END;CURINPUT.NAMEFIELD:=CURNAME;END;
  2218  {538:}BEGIN LINE:=1;
  2219  IF INPUTLN(INPUTFILE[CURINPUT.INDEXFIELD],FALSE)THEN;FIRMUPTHELINE;
  2220  IF(EQTB[5311].INT<0)OR(EQTB[5311].INT>255)THEN CURINPUT.LIMITFIELD:=
  2221  CURINPUT.LIMITFIELD-1 ELSE BUFFER[CURINPUT.LIMITFIELD]:=EQTB[5311].INT;
  2222  FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
  2223  END{:538};END;{:537}{560:}FUNCTION READFONTINFO(U:HALFWORD;
  2224  NOM,AIRE:STRNUMBER;S:SCALED):INTERNALFONTNUMBER;LABEL 30,11,45;
  2225  VAR K:FONTINDEX;FILEOPENED:BOOLEAN;
  2226  LF,LH,BC,EC,NW,NH,ND,NI,NL,NK,NE,NP:HALFWORD;F:INTERNALFONTNUMBER;
  2227  G:INTERNALFONTNUMBER;A,B,C,D:EIGHTBITS;QW:FOURQUARTERS;SW:SCALED;
  2228  BCHLABEL:INTEGER;BCHAR:0..256;Z:SCALED;ALPHA:INTEGER;BETA:1..16;
  2229  BEGIN G:=0;{562:}{563:}FILEOPENED:=FALSE;
  2230  IF AIRE=338 THEN PACKFILENAME(NOM,785,811)ELSE PACKFILENAME(NOM,AIRE,811
  2231  );IF NOT BOPENIN(TFMFILE)THEN GOTO 11;FILEOPENED:=TRUE{:563};
  2232  {565:}BEGIN BEGIN LF:=TFMFILE^;IF LF>127 THEN GOTO 11;GET(TFMFILE);
  2233  LF:=LF*256+TFMFILE^;END;GET(TFMFILE);BEGIN LH:=TFMFILE^;
  2234  IF LH>127 THEN GOTO 11;GET(TFMFILE);LH:=LH*256+TFMFILE^;END;
  2235  GET(TFMFILE);BEGIN BC:=TFMFILE^;IF BC>127 THEN GOTO 11;GET(TFMFILE);
  2236  BC:=BC*256+TFMFILE^;END;GET(TFMFILE);BEGIN EC:=TFMFILE^;
  2237  IF EC>127 THEN GOTO 11;GET(TFMFILE);EC:=EC*256+TFMFILE^;END;
  2238  IF(BC>EC+1)OR(EC>255)THEN GOTO 11;IF BC>255 THEN BEGIN BC:=1;EC:=0;END;
  2239  GET(TFMFILE);BEGIN NW:=TFMFILE^;IF NW>127 THEN GOTO 11;GET(TFMFILE);
  2240  NW:=NW*256+TFMFILE^;END;GET(TFMFILE);BEGIN NH:=TFMFILE^;
  2241  IF NH>127 THEN GOTO 11;GET(TFMFILE);NH:=NH*256+TFMFILE^;END;
  2242  GET(TFMFILE);BEGIN ND:=TFMFILE^;IF ND>127 THEN GOTO 11;GET(TFMFILE);
  2243  ND:=ND*256+TFMFILE^;END;GET(TFMFILE);BEGIN NI:=TFMFILE^;
  2244  IF NI>127 THEN GOTO 11;GET(TFMFILE);NI:=NI*256+TFMFILE^;END;
  2245  GET(TFMFILE);BEGIN NL:=TFMFILE^;IF NL>127 THEN GOTO 11;GET(TFMFILE);
  2246  NL:=NL*256+TFMFILE^;END;GET(TFMFILE);BEGIN NK:=TFMFILE^;
  2247  IF NK>127 THEN GOTO 11;GET(TFMFILE);NK:=NK*256+TFMFILE^;END;
  2248  GET(TFMFILE);BEGIN NE:=TFMFILE^;IF NE>127 THEN GOTO 11;GET(TFMFILE);
  2249  NE:=NE*256+TFMFILE^;END;GET(TFMFILE);BEGIN NP:=TFMFILE^;
  2250  IF NP>127 THEN GOTO 11;GET(TFMFILE);NP:=NP*256+TFMFILE^;END;
  2251  IF LF<>6+LH+(EC-BC+1)+NW+NH+ND+NI+NL+NK+NE+NP THEN GOTO 11;
  2252  IF(NW=0)OR(NH=0)OR(ND=0)OR(NI=0)THEN GOTO 11;END{:565};
  2253  {566:}LF:=LF-6-LH;IF NP<7 THEN LF:=LF+7-NP;
  2254  IF(FONTPTR=FONTMAX)OR(FMEMPTR+LF>FONTMEMSIZE)THEN{567:}BEGIN BEGIN IF
  2255  INTERACTION=3 THEN;PRINTNL(262);PRINT(802);END;SPRINTCS(U);
  2256  PRINTCHAR(61);PRINTFILENAME(NOM,AIRE,338);IF S>=0 THEN BEGIN PRINT(741);
  2257  PRINTSCALED(S);PRINT(397);END ELSE IF S<>-1000 THEN BEGIN PRINT(803);
  2258  PRINTINT(-S);END;PRINT(812);BEGIN HELPPTR:=4;HELPLINE[3]:=813;
  2259  HELPLINE[2]:=814;HELPLINE[1]:=815;HELPLINE[0]:=816;END;ERROR;GOTO 30;
  2260  END{:567};F:=FONTPTR+1;CHARBASE[F]:=FMEMPTR-BC;
  2261  WIDTHBASE[F]:=CHARBASE[F]+EC+1;HEIGHTBASE[F]:=WIDTHBASE[F]+NW;
  2262  DEPTHBASE[F]:=HEIGHTBASE[F]+NH;ITALICBASE[F]:=DEPTHBASE[F]+ND;
  2263  LIGKERNBASE[F]:=ITALICBASE[F]+NI;
  2264  KERNBASE[F]:=LIGKERNBASE[F]+NL-256*(128);
  2265  EXTENBASE[F]:=KERNBASE[F]+256*(128)+NK;
  2266  PARAMBASE[F]:=EXTENBASE[F]+NE{:566};{568:}BEGIN IF LH<2 THEN GOTO 11;
  2267  BEGIN GET(TFMFILE);A:=TFMFILE^;QW.B0:=A+0;GET(TFMFILE);B:=TFMFILE^;
  2268  QW.B1:=B+0;GET(TFMFILE);C:=TFMFILE^;QW.B2:=C+0;GET(TFMFILE);D:=TFMFILE^;
  2269  QW.B3:=D+0;FONTCHECK[F]:=QW;END;GET(TFMFILE);BEGIN Z:=TFMFILE^;
  2270  IF Z>127 THEN GOTO 11;GET(TFMFILE);Z:=Z*256+TFMFILE^;END;GET(TFMFILE);
  2271  Z:=Z*256+TFMFILE^;GET(TFMFILE);Z:=(Z*16)+(TFMFILE^DIV 16);
  2272  IF Z<65536 THEN GOTO 11;WHILE LH>2 DO BEGIN GET(TFMFILE);GET(TFMFILE);
  2273  GET(TFMFILE);GET(TFMFILE);LH:=LH-1;END;FONTDSIZE[F]:=Z;
  2274  IF S<>-1000 THEN IF S>=0 THEN Z:=S ELSE Z:=XNOVERD(Z,-S,1000);
  2275  FONTSIZE[F]:=Z;END{:568};
  2276  {569:}FOR K:=FMEMPTR TO WIDTHBASE[F]-1 DO BEGIN BEGIN GET(TFMFILE);
  2277  A:=TFMFILE^;QW.B0:=A+0;GET(TFMFILE);B:=TFMFILE^;QW.B1:=B+0;GET(TFMFILE);
  2278  C:=TFMFILE^;QW.B2:=C+0;GET(TFMFILE);D:=TFMFILE^;QW.B3:=D+0;
  2279  FONTINFO[K].QQQQ:=QW;END;
  2280  IF(A>=NW)OR(B DIV 16>=NH)OR(B MOD 16>=ND)OR(C DIV 4>=NI)THEN GOTO 11;
  2281  CASE C MOD 4 OF 1:IF D>=NL THEN GOTO 11;3:IF D>=NE THEN GOTO 11;
  2282  2:{570:}BEGIN BEGIN IF(D<BC)OR(D>EC)THEN GOTO 11 END;
  2283  WHILE D<K+BC-FMEMPTR DO BEGIN QW:=FONTINFO[CHARBASE[F]+D].QQQQ;
  2284  IF((QW.B2-0)MOD 4)<>2 THEN GOTO 45;D:=QW.B3-0;END;
  2285  IF D=K+BC-FMEMPTR THEN GOTO 11;45:END{:570};ELSE END;END{:569};
  2286  {571:}BEGIN{572:}BEGIN ALPHA:=16;WHILE Z>=8388608 DO BEGIN Z:=Z DIV 2;
  2287  ALPHA:=ALPHA+ALPHA;END;BETA:=256 DIV ALPHA;ALPHA:=ALPHA*Z;END{:572};
  2288  FOR K:=WIDTHBASE[F]TO LIGKERNBASE[F]-1 DO BEGIN GET(TFMFILE);
  2289  A:=TFMFILE^;GET(TFMFILE);B:=TFMFILE^;GET(TFMFILE);C:=TFMFILE^;
  2290  GET(TFMFILE);D:=TFMFILE^;
  2291  SW:=(((((D*Z)DIV 256)+(C*Z))DIV 256)+(B*Z))DIV BETA;
  2292  IF A=0 THEN FONTINFO[K].INT:=SW ELSE IF A=255 THEN FONTINFO[K].INT:=SW-
  2293  ALPHA ELSE GOTO 11;END;IF FONTINFO[WIDTHBASE[F]].INT<>0 THEN GOTO 11;
  2294  IF FONTINFO[HEIGHTBASE[F]].INT<>0 THEN GOTO 11;
  2295  IF FONTINFO[DEPTHBASE[F]].INT<>0 THEN GOTO 11;
  2296  IF FONTINFO[ITALICBASE[F]].INT<>0 THEN GOTO 11;END{:571};
  2297  {573:}BCHLABEL:=32767;BCHAR:=256;
  2298  IF NL>0 THEN BEGIN FOR K:=LIGKERNBASE[F]TO KERNBASE[F]+256*(128)-1 DO
  2299  BEGIN BEGIN GET(TFMFILE);A:=TFMFILE^;QW.B0:=A+0;GET(TFMFILE);
  2300  B:=TFMFILE^;QW.B1:=B+0;GET(TFMFILE);C:=TFMFILE^;QW.B2:=C+0;GET(TFMFILE);
  2301  D:=TFMFILE^;QW.B3:=D+0;FONTINFO[K].QQQQ:=QW;END;
  2302  IF A>128 THEN BEGIN IF 256*C+D>=NL THEN GOTO 11;
  2303  IF A=255 THEN IF K=LIGKERNBASE[F]THEN BCHAR:=B;
  2304  END ELSE BEGIN IF B<>BCHAR THEN BEGIN BEGIN IF(B<BC)OR(B>EC)THEN GOTO 11
  2305  END;QW:=FONTINFO[CHARBASE[F]+B].QQQQ;IF NOT(QW.B0>0)THEN GOTO 11;END;
  2306  IF C<128 THEN BEGIN BEGIN IF(D<BC)OR(D>EC)THEN GOTO 11 END;
  2307  QW:=FONTINFO[CHARBASE[F]+D].QQQQ;IF NOT(QW.B0>0)THEN GOTO 11;
  2308  END ELSE IF 256*(C-128)+D>=NK THEN GOTO 11;
  2309  IF A<128 THEN IF K-LIGKERNBASE[F]+A+1>=NL THEN GOTO 11;END;END;
  2310  IF A=255 THEN BCHLABEL:=256*C+D;END;
  2311  FOR K:=KERNBASE[F]+256*(128)TO EXTENBASE[F]-1 DO BEGIN GET(TFMFILE);
  2312  A:=TFMFILE^;GET(TFMFILE);B:=TFMFILE^;GET(TFMFILE);C:=TFMFILE^;
  2313  GET(TFMFILE);D:=TFMFILE^;
  2314  SW:=(((((D*Z)DIV 256)+(C*Z))DIV 256)+(B*Z))DIV BETA;
  2315  IF A=0 THEN FONTINFO[K].INT:=SW ELSE IF A=255 THEN FONTINFO[K].INT:=SW-
  2316  ALPHA ELSE GOTO 11;END;{:573};
  2317  {574:}FOR K:=EXTENBASE[F]TO PARAMBASE[F]-1 DO BEGIN BEGIN GET(TFMFILE);
  2318  A:=TFMFILE^;QW.B0:=A+0;GET(TFMFILE);B:=TFMFILE^;QW.B1:=B+0;GET(TFMFILE);
  2319  C:=TFMFILE^;QW.B2:=C+0;GET(TFMFILE);D:=TFMFILE^;QW.B3:=D+0;
  2320  FONTINFO[K].QQQQ:=QW;END;
  2321  IF A<>0 THEN BEGIN BEGIN IF(A<BC)OR(A>EC)THEN GOTO 11 END;
  2322  QW:=FONTINFO[CHARBASE[F]+A].QQQQ;IF NOT(QW.B0>0)THEN GOTO 11;END;
  2323  IF B<>0 THEN BEGIN BEGIN IF(B<BC)OR(B>EC)THEN GOTO 11 END;
  2324  QW:=FONTINFO[CHARBASE[F]+B].QQQQ;IF NOT(QW.B0>0)THEN GOTO 11;END;
  2325  IF C<>0 THEN BEGIN BEGIN IF(C<BC)OR(C>EC)THEN GOTO 11 END;
  2326  QW:=FONTINFO[CHARBASE[F]+C].QQQQ;IF NOT(QW.B0>0)THEN GOTO 11;END;
  2327  BEGIN BEGIN IF(D<BC)OR(D>EC)THEN GOTO 11 END;
  2328  QW:=FONTINFO[CHARBASE[F]+D].QQQQ;IF NOT(QW.B0>0)THEN GOTO 11;END;
  2329  END{:574};{575:}BEGIN FOR K:=1 TO NP DO IF K=1 THEN BEGIN GET(TFMFILE);
  2330  SW:=TFMFILE^;IF SW>127 THEN SW:=SW-256;GET(TFMFILE);SW:=SW*256+TFMFILE^;
  2331  GET(TFMFILE);SW:=SW*256+TFMFILE^;GET(TFMFILE);
  2332  FONTINFO[PARAMBASE[F]].INT:=(SW*16)+(TFMFILE^DIV 16);
  2333  END ELSE BEGIN GET(TFMFILE);A:=TFMFILE^;GET(TFMFILE);B:=TFMFILE^;
  2334  GET(TFMFILE);C:=TFMFILE^;GET(TFMFILE);D:=TFMFILE^;
  2335  SW:=(((((D*Z)DIV 256)+(C*Z))DIV 256)+(B*Z))DIV BETA;
  2336  IF A=0 THEN FONTINFO[PARAMBASE[F]+K-1].INT:=SW ELSE IF A=255 THEN
  2337  FONTINFO[PARAMBASE[F]+K-1].INT:=SW-ALPHA ELSE GOTO 11;END;
  2338  IF EOF(TFMFILE)THEN GOTO 11;
  2339  FOR K:=NP+1 TO 7 DO FONTINFO[PARAMBASE[F]+K-1].INT:=0;END{:575};
  2340  {576:}IF NP>=7 THEN FONTPARAMS[F]:=NP ELSE FONTPARAMS[F]:=7;
  2341  HYPHENCHAR[F]:=EQTB[5309].INT;SKEWCHAR[F]:=EQTB[5310].INT;
  2342  IF BCHLABEL<NL THEN BCHARLABEL[F]:=BCHLABEL+LIGKERNBASE[F]ELSE
  2343  BCHARLABEL[F]:=0;FONTBCHAR[F]:=BCHAR+0;FONTFALSEBCHAR[F]:=BCHAR+0;
  2344  IF BCHAR<=EC THEN IF BCHAR>=BC THEN BEGIN QW:=FONTINFO[CHARBASE[F]+BCHAR
  2345  ].QQQQ;IF(QW.B0>0)THEN FONTFALSEBCHAR[F]:=256;END;FONTNAME[F]:=NOM;
  2346  FONTAREA[F]:=AIRE;FONTBC[F]:=BC;FONTEC[F]:=EC;FONTGLUE[F]:=0;
  2347  CHARBASE[F]:=CHARBASE[F]-0;WIDTHBASE[F]:=WIDTHBASE[F]-0;
  2348  LIGKERNBASE[F]:=LIGKERNBASE[F]-0;KERNBASE[F]:=KERNBASE[F]-0;
  2349  EXTENBASE[F]:=EXTENBASE[F]-0;PARAMBASE[F]:=PARAMBASE[F]-1;
  2350  FMEMPTR:=FMEMPTR+LF;FONTPTR:=F;G:=F;GOTO 30{:576}{:562};
  2351  11:{561:}BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(802);END;
  2352  SPRINTCS(U);PRINTCHAR(61);PRINTFILENAME(NOM,AIRE,338);
  2353  IF S>=0 THEN BEGIN PRINT(741);PRINTSCALED(S);PRINT(397);
  2354  END ELSE IF S<>-1000 THEN BEGIN PRINT(803);PRINTINT(-S);END;
  2355  IF FILEOPENED THEN PRINT(804)ELSE PRINT(805);BEGIN HELPPTR:=5;
  2356  HELPLINE[4]:=806;HELPLINE[3]:=807;HELPLINE[2]:=808;HELPLINE[1]:=809;
  2357  HELPLINE[0]:=810;END;ERROR{:561};30:IF FILEOPENED THEN BCLOSE(TFMFILE);
  2358  READFONTINFO:=G;END;
  2359  {:560}{581:}PROCEDURE CHARWARNING(F:INTERNALFONTNUMBER;C:EIGHTBITS);
  2360  BEGIN IF EQTB[5298].INT>0 THEN BEGIN BEGINDIAGNOSTIC;PRINTNL(825);
  2361  PRINT(C);PRINT(826);SLOWPRINT(FONTNAME[F]);PRINTCHAR(33);
  2362  ENDDIAGNOSTIC(FALSE);END;END;
  2363  {:581}{582:}FUNCTION NEWCHARACTER(F:INTERNALFONTNUMBER;
  2364  C:EIGHTBITS):HALFWORD;LABEL 10;VAR P:HALFWORD;
  2365  BEGIN IF FONTBC[F]<=C THEN IF FONTEC[F]>=C THEN IF(FONTINFO[CHARBASE[F]+
  2366  C+0].QQQQ.B0>0)THEN BEGIN P:=GETAVAIL;MEM[P].HH.B0:=F;MEM[P].HH.B1:=C+0;
  2367  NEWCHARACTER:=P;GOTO 10;END;CHARWARNING(F,C);NEWCHARACTER:=0;10:END;
  2368  {:582}{597:}PROCEDURE WRITEDVI(A,B:DVIINDEX);VAR K:DVIINDEX;
  2369  BEGIN FOR K:=A TO B DO WRITE(DVIFILE,DVIBUF[K]);END;
  2370  {:597}{598:}PROCEDURE DVISWAP;
  2371  BEGIN IF DVILIMIT=DVIBUFSIZE THEN BEGIN WRITEDVI(0,HALFBUF-1);
  2372  DVILIMIT:=HALFBUF;DVIOFFSET:=DVIOFFSET+DVIBUFSIZE;DVIPTR:=0;
  2373  END ELSE BEGIN WRITEDVI(HALFBUF,DVIBUFSIZE-1);DVILIMIT:=DVIBUFSIZE;END;
  2374  DVIGONE:=DVIGONE+HALFBUF;END;{:598}{600:}PROCEDURE DVIFOUR(X:INTEGER);
  2375  BEGIN IF X>=0 THEN BEGIN DVIBUF[DVIPTR]:=X DIV 16777216;
  2376  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;
  2377  END ELSE BEGIN X:=X+1073741824;X:=X+1073741824;
  2378  BEGIN DVIBUF[DVIPTR]:=(X DIV 16777216)+128;DVIPTR:=DVIPTR+1;
  2379  IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;X:=X MOD 16777216;
  2380  BEGIN DVIBUF[DVIPTR]:=X DIV 65536;DVIPTR:=DVIPTR+1;
  2381  IF DVIPTR=DVILIMIT THEN DVISWAP;END;X:=X MOD 65536;
  2382  BEGIN DVIBUF[DVIPTR]:=X DIV 256;DVIPTR:=DVIPTR+1;
  2383  IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=X MOD 256;
  2384  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;
  2385  {:600}{601:}PROCEDURE DVIPOP(L:INTEGER);
  2386  BEGIN IF(L=DVIOFFSET+DVIPTR)AND(DVIPTR>0)THEN DVIPTR:=DVIPTR-1 ELSE
  2387  BEGIN DVIBUF[DVIPTR]:=142;DVIPTR:=DVIPTR+1;
  2388  IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;
  2389  {:601}{602:}PROCEDURE DVIFONTDEF(F:INTERNALFONTNUMBER);
  2390  VAR K:POOLPOINTER;BEGIN BEGIN DVIBUF[DVIPTR]:=243;DVIPTR:=DVIPTR+1;
  2391  IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=F-1;
  2392  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2393  BEGIN DVIBUF[DVIPTR]:=FONTCHECK[F].B0-0;DVIPTR:=DVIPTR+1;
  2394  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2395  BEGIN DVIBUF[DVIPTR]:=FONTCHECK[F].B1-0;DVIPTR:=DVIPTR+1;
  2396  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2397  BEGIN DVIBUF[DVIPTR]:=FONTCHECK[F].B2-0;DVIPTR:=DVIPTR+1;
  2398  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2399  BEGIN DVIBUF[DVIPTR]:=FONTCHECK[F].B3-0;DVIPTR:=DVIPTR+1;
  2400  IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(FONTSIZE[F]);
  2401  DVIFOUR(FONTDSIZE[F]);
  2402  BEGIN DVIBUF[DVIPTR]:=(STRSTART[FONTAREA[F]+1]-STRSTART[FONTAREA[F]]);
  2403  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2404  BEGIN DVIBUF[DVIPTR]:=(STRSTART[FONTNAME[F]+1]-STRSTART[FONTNAME[F]]);
  2405  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2406  {603:}FOR K:=STRSTART[FONTAREA[F]]TO STRSTART[FONTAREA[F]+1]-1 DO BEGIN
  2407  DVIBUF[DVIPTR]:=STRPOOL[K];DVIPTR:=DVIPTR+1;
  2408  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2409  FOR K:=STRSTART[FONTNAME[F]]TO STRSTART[FONTNAME[F]+1]-1 DO BEGIN DVIBUF
  2410  [DVIPTR]:=STRPOOL[K];DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;
  2411  END{:603};END;{:602}{607:}PROCEDURE MOVEMENT(W:SCALED;O:EIGHTBITS);
  2412  LABEL 10,40,45,2,1;VAR MSTATE:SMALLNUMBER;P,Q:HALFWORD;K:INTEGER;
  2413  BEGIN Q:=GETNODE(3);MEM[Q+1].INT:=W;MEM[Q+2].INT:=DVIOFFSET+DVIPTR;
  2414  IF O=157 THEN BEGIN MEM[Q].HH.RH:=DOWNPTR;DOWNPTR:=Q;
  2415  END ELSE BEGIN MEM[Q].HH.RH:=RIGHTPTR;RIGHTPTR:=Q;END;
  2416  {611:}P:=MEM[Q].HH.RH;MSTATE:=0;
  2417  WHILE P<>0 DO BEGIN IF MEM[P+1].INT=W THEN{612:}CASE MSTATE+MEM[P].HH.LH
  2418  OF 3,4,15,16:IF MEM[P+2].INT<DVIGONE THEN GOTO 45 ELSE{613:}BEGIN K:=MEM
  2419  [P+2].INT-DVIOFFSET;IF K<0 THEN K:=K+DVIBUFSIZE;DVIBUF[K]:=DVIBUF[K]+5;
  2420  MEM[P].HH.LH:=1;GOTO 40;END{:613};
  2421  5,9,11:IF MEM[P+2].INT<DVIGONE THEN GOTO 45 ELSE{614:}BEGIN K:=MEM[P+2].
  2422  INT-DVIOFFSET;IF K<0 THEN K:=K+DVIBUFSIZE;DVIBUF[K]:=DVIBUF[K]+10;
  2423  MEM[P].HH.LH:=2;GOTO 40;END{:614};1,2,8,13:GOTO 40;
  2424  ELSE END{:612}ELSE CASE MSTATE+MEM[P].HH.LH OF 1:MSTATE:=6;2:MSTATE:=12;
  2425  8,13:GOTO 45;ELSE END;P:=MEM[P].HH.RH;END;45:{:611};
  2426  {610:}MEM[Q].HH.LH:=3;
  2427  IF ABS(W)>=8388608 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=O+3;
  2428  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(W);GOTO 10;
  2429  END;IF ABS(W)>=32768 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=O+2;
  2430  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2431  IF W<0 THEN W:=W+16777216;BEGIN DVIBUF[DVIPTR]:=W DIV 65536;
  2432  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;W:=W MOD 65536;
  2433  GOTO 2;END;IF ABS(W)>=128 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=O+1;
  2434  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2435  IF W<0 THEN W:=W+65536;GOTO 2;END;BEGIN DVIBUF[DVIPTR]:=O;
  2436  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2437  IF W<0 THEN W:=W+256;GOTO 1;2:BEGIN DVIBUF[DVIPTR]:=W DIV 256;
  2438  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2439  1:BEGIN DVIBUF[DVIPTR]:=W MOD 256;DVIPTR:=DVIPTR+1;
  2440  IF DVIPTR=DVILIMIT THEN DVISWAP;END;GOTO 10{:610};
  2441  40:{609:}MEM[Q].HH.LH:=MEM[P].HH.LH;
  2442  IF MEM[Q].HH.LH=1 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=O+4;DVIPTR:=DVIPTR+1;
  2443  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2444  WHILE MEM[Q].HH.RH<>P DO BEGIN Q:=MEM[Q].HH.RH;
  2445  CASE MEM[Q].HH.LH OF 3:MEM[Q].HH.LH:=5;4:MEM[Q].HH.LH:=6;ELSE END;END;
  2446  END ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=O+9;DVIPTR:=DVIPTR+1;
  2447  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2448  WHILE MEM[Q].HH.RH<>P DO BEGIN Q:=MEM[Q].HH.RH;
  2449  CASE MEM[Q].HH.LH OF 3:MEM[Q].HH.LH:=4;5:MEM[Q].HH.LH:=6;ELSE END;END;
  2450  END{:609};10:END;{:607}{615:}PROCEDURE PRUNEMOVEMENTS(L:INTEGER);
  2451  LABEL 30,10;VAR P:HALFWORD;
  2452  BEGIN WHILE DOWNPTR<>0 DO BEGIN IF MEM[DOWNPTR+2].INT<L THEN GOTO 30;
  2453  P:=DOWNPTR;DOWNPTR:=MEM[P].HH.RH;FREENODE(P,3);END;
  2454  30:WHILE RIGHTPTR<>0 DO BEGIN IF MEM[RIGHTPTR+2].INT<L THEN GOTO 10;
  2455  P:=RIGHTPTR;RIGHTPTR:=MEM[P].HH.RH;FREENODE(P,3);END;10:END;
  2456  {:615}{618:}PROCEDURE VLISTOUT;FORWARD;
  2457  {:618}{619:}{1368:}PROCEDURE SPECIALOUT(P:HALFWORD);
  2458  VAR OLDSETTING:0..21;K:POOLPOINTER;
  2459  BEGIN IF CURH<>DVIH THEN BEGIN MOVEMENT(CURH-DVIH,143);DVIH:=CURH;END;
  2460  IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
  2461  OLDSETTING:=SELECTOR;SELECTOR:=21;
  2462  SHOWTOKENLIST(MEM[MEM[P+1].HH.RH].HH.RH,0,POOLSIZE-POOLPTR);
  2463  SELECTOR:=OLDSETTING;
  2464  BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(257,POOLSIZE-INITPOOLPTR);END;
  2465  IF(POOLPTR-STRSTART[STRPTR])<256 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=239;
  2466  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2467  BEGIN DVIBUF[DVIPTR]:=(POOLPTR-STRSTART[STRPTR]);DVIPTR:=DVIPTR+1;
  2468  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2469  END ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=242;DVIPTR:=DVIPTR+1;
  2470  IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR((POOLPTR-STRSTART[STRPTR]));
  2471  END;
  2472  FOR K:=STRSTART[STRPTR]TO POOLPTR-1 DO BEGIN DVIBUF[DVIPTR]:=STRPOOL[K];
  2473  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2474  POOLPTR:=STRSTART[STRPTR];END;
  2475  {:1368}{1370:}PROCEDURE WRITEOUT(P:HALFWORD);VAR OLDSETTING:0..21;
  2476  OLDMODE:INTEGER;J:SMALLNUMBER;Q,R:HALFWORD;BEGIN{1371:}Q:=GETAVAIL;
  2477  MEM[Q].HH.LH:=637;R:=GETAVAIL;MEM[Q].HH.RH:=R;MEM[R].HH.LH:=6717;
  2478  BEGINTOKENLIST(Q,4);BEGINTOKENLIST(MEM[P+1].HH.RH,15);Q:=GETAVAIL;
  2479  MEM[Q].HH.LH:=379;BEGINTOKENLIST(Q,4);OLDMODE:=CURLIST.MODEFIELD;
  2480  CURLIST.MODEFIELD:=0;CURCS:=WRITELOC;Q:=SCANTOKS(FALSE,TRUE);GETTOKEN;
  2481  IF CURTOK<>6717 THEN{1372:}BEGIN BEGIN IF INTERACTION=3 THEN;
  2482  PRINTNL(262);PRINT(1297);END;BEGIN HELPPTR:=2;HELPLINE[1]:=1298;
  2483  HELPLINE[0]:=1012;END;ERROR;REPEAT GETTOKEN;UNTIL CURTOK=6717;
  2484  END{:1372};CURLIST.MODEFIELD:=OLDMODE;ENDTOKENLIST{:1371};
  2485  OLDSETTING:=SELECTOR;J:=MEM[P+1].HH.LH;
  2486  IF WRITEOPEN[J]THEN SELECTOR:=J ELSE BEGIN IF(J=17)AND(SELECTOR=19)THEN
  2487  SELECTOR:=18;PRINTNL(338);END;TOKENSHOW(DEFREF);PRINTLN;
  2488  FLUSHLIST(DEFREF);SELECTOR:=OLDSETTING;END;
  2489  {:1370}{1373:}PROCEDURE OUTWHAT(P:HALFWORD);VAR J:SMALLNUMBER;
  2490  BEGIN CASE MEM[P].HH.B1 OF 0,1,2:{1374:}IF NOT DOINGLEADERS THEN BEGIN J
  2491  :=MEM[P+1].HH.LH;
  2492  IF MEM[P].HH.B1=1 THEN WRITEOUT(P)ELSE BEGIN IF WRITEOPEN[J]THEN ACLOSE(
  2493  WRITEFILE[J]);
  2494  IF MEM[P].HH.B1=2 THEN WRITEOPEN[J]:=FALSE ELSE IF J<16 THEN BEGIN
  2495  CURNAME:=MEM[P+1].HH.RH;CURAREA:=MEM[P+2].HH.LH;CUREXT:=MEM[P+2].HH.RH;
  2496  IF CUREXT=338 THEN CUREXT:=791;PACKFILENAME(CURNAME,CURAREA,CUREXT);
  2497  WHILE NOT AOPENOUT(WRITEFILE[J])DO PROMPTFILENAME(1300,791);
  2498  WRITEOPEN[J]:=TRUE;END;END;END{:1374};3:SPECIALOUT(P);4:;
  2499  ELSE CONFUSION(1299)END;END;{:1373}PROCEDURE HLISTOUT;LABEL 21,13,14,15;
  2500  VAR BASELINE:SCALED;LEFTEDGE:SCALED;SAVEH,SAVEV:SCALED;THISBOX:HALFWORD;
  2501  GORDER:GLUEORD;GSIGN:0..2;P:HALFWORD;SAVELOC:INTEGER;LEADERBOX:HALFWORD;
  2502  LEADERWD:SCALED;LX:SCALED;OUTERDOINGLEADERS:BOOLEAN;EDGE:SCALED;
  2503  GLUETEMP:REAL;CURGLUE:REAL;CURG:SCALED;BEGIN CURG:=0;CURGLUE:=0.0;
  2504  THISBOX:=TEMPPTR;GORDER:=MEM[THISBOX+5].HH.B1;
  2505  GSIGN:=MEM[THISBOX+5].HH.B0;P:=MEM[THISBOX+5].HH.RH;CURS:=CURS+1;
  2506  IF CURS>0 THEN BEGIN DVIBUF[DVIPTR]:=141;DVIPTR:=DVIPTR+1;
  2507  IF DVIPTR=DVILIMIT THEN DVISWAP;END;IF CURS>MAXPUSH THEN MAXPUSH:=CURS;
  2508  SAVELOC:=DVIOFFSET+DVIPTR;BASELINE:=CURV;LEFTEDGE:=CURH;
  2509  WHILE P<>0 DO{620:}21:IF(P>=HIMEMMIN)THEN BEGIN IF CURH<>DVIH THEN BEGIN
  2510  MOVEMENT(CURH-DVIH,143);DVIH:=CURH;END;
  2511  IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
  2512  REPEAT F:=MEM[P].HH.B0;C:=MEM[P].HH.B1;
  2513  IF F<>DVIF THEN{621:}BEGIN IF NOT FONTUSED[F]THEN BEGIN DVIFONTDEF(F);
  2514  FONTUSED[F]:=TRUE;END;IF F<=64 THEN BEGIN DVIBUF[DVIPTR]:=F+170;
  2515  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;
  2516  END ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=235;DVIPTR:=DVIPTR+1;
  2517  IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=F-1;
  2518  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;DVIF:=F;
  2519  END{:621};IF C>=128 THEN BEGIN DVIBUF[DVIPTR]:=128;DVIPTR:=DVIPTR+1;
  2520  IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=C-0;
  2521  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2522  CURH:=CURH+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+C].QQQQ.B0].INT;
  2523  P:=MEM[P].HH.RH;UNTIL NOT(P>=HIMEMMIN);DVIH:=CURH;
  2524  END ELSE{622:}BEGIN CASE MEM[P].HH.B0 OF 0,1:{623:}IF MEM[P+5].HH.RH=0
  2525  THEN CURH:=CURH+MEM[P+1].INT ELSE BEGIN SAVEH:=DVIH;SAVEV:=DVIV;
  2526  CURV:=BASELINE+MEM[P+4].INT;TEMPPTR:=P;EDGE:=CURH;
  2527  IF MEM[P].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;DVIH:=SAVEH;DVIV:=SAVEV;
  2528  CURH:=EDGE+MEM[P+1].INT;CURV:=BASELINE;END{:623};
  2529  2:BEGIN RULEHT:=MEM[P+3].INT;RULEDP:=MEM[P+2].INT;RULEWD:=MEM[P+1].INT;
  2530  GOTO 14;END;8:{1367:}OUTWHAT(P){:1367};10:{625:}BEGIN G:=MEM[P+1].HH.LH;
  2531  RULEWD:=MEM[G+1].INT-CURG;
  2532  IF GSIGN<>0 THEN BEGIN IF GSIGN=1 THEN BEGIN IF MEM[G].HH.B0=GORDER THEN
  2533  BEGIN CURGLUE:=CURGLUE+MEM[G+2].INT;GLUETEMP:=MEM[THISBOX+6].GR*CURGLUE;
  2534  IF GLUETEMP>1000000000.0 THEN GLUETEMP:=1000000000.0 ELSE IF GLUETEMP<
  2535  -1000000000.0 THEN GLUETEMP:=-1000000000.0;CURG:=ROUND(GLUETEMP);END;
  2536  END ELSE IF MEM[G].HH.B1=GORDER THEN BEGIN CURGLUE:=CURGLUE-MEM[G+3].INT
  2537  ;GLUETEMP:=MEM[THISBOX+6].GR*CURGLUE;
  2538  IF GLUETEMP>1000000000.0 THEN GLUETEMP:=1000000000.0 ELSE IF GLUETEMP<
  2539  -1000000000.0 THEN GLUETEMP:=-1000000000.0;CURG:=ROUND(GLUETEMP);END;
  2540  END;RULEWD:=RULEWD+CURG;
  2541  IF MEM[P].HH.B1>=100 THEN{626:}BEGIN LEADERBOX:=MEM[P+1].HH.RH;
  2542  IF MEM[LEADERBOX].HH.B0=2 THEN BEGIN RULEHT:=MEM[LEADERBOX+3].INT;
  2543  RULEDP:=MEM[LEADERBOX+2].INT;GOTO 14;END;LEADERWD:=MEM[LEADERBOX+1].INT;
  2544  IF(LEADERWD>0)AND(RULEWD>0)THEN BEGIN RULEWD:=RULEWD+10;
  2545  EDGE:=CURH+RULEWD;LX:=0;
  2546  {627:}IF MEM[P].HH.B1=100 THEN BEGIN SAVEH:=CURH;
  2547  CURH:=LEFTEDGE+LEADERWD*((CURH-LEFTEDGE)DIV LEADERWD);
  2548  IF CURH<SAVEH THEN CURH:=CURH+LEADERWD;
  2549  END ELSE BEGIN LQ:=RULEWD DIV LEADERWD;LR:=RULEWD MOD LEADERWD;
  2550  IF MEM[P].HH.B1=101 THEN CURH:=CURH+(LR DIV 2)ELSE BEGIN LX:=LR DIV(LQ+1
  2551  );CURH:=CURH+((LR-(LQ-1)*LX)DIV 2);END;END{:627};
  2552  WHILE CURH+LEADERWD<=EDGE DO{628:}BEGIN CURV:=BASELINE+MEM[LEADERBOX+4].
  2553  INT;IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
  2554  SAVEV:=DVIV;IF CURH<>DVIH THEN BEGIN MOVEMENT(CURH-DVIH,143);DVIH:=CURH;
  2555  END;SAVEH:=DVIH;TEMPPTR:=LEADERBOX;OUTERDOINGLEADERS:=DOINGLEADERS;
  2556  DOINGLEADERS:=TRUE;
  2557  IF MEM[LEADERBOX].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;
  2558  DOINGLEADERS:=OUTERDOINGLEADERS;DVIV:=SAVEV;DVIH:=SAVEH;CURV:=BASELINE;
  2559  CURH:=SAVEH+LEADERWD+LX;END{:628};CURH:=EDGE-10;GOTO 15;END;END{:626};
  2560  GOTO 13;END{:625};11,9:CURH:=CURH+MEM[P+1].INT;
  2561  6:{652:}BEGIN MEM[29988]:=MEM[P+1];MEM[29988].HH.RH:=MEM[P].HH.RH;
  2562  P:=29988;GOTO 21;END{:652};ELSE END;GOTO 15;
  2563  14:{624:}IF(RULEHT=-1073741824)THEN RULEHT:=MEM[THISBOX+3].INT;
  2564  IF(RULEDP=-1073741824)THEN RULEDP:=MEM[THISBOX+2].INT;
  2565  RULEHT:=RULEHT+RULEDP;
  2566  IF(RULEHT>0)AND(RULEWD>0)THEN BEGIN IF CURH<>DVIH THEN BEGIN MOVEMENT(
  2567  CURH-DVIH,143);DVIH:=CURH;END;CURV:=BASELINE+RULEDP;
  2568  IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
  2569  BEGIN DVIBUF[DVIPTR]:=132;DVIPTR:=DVIPTR+1;
  2570  IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(RULEHT);DVIFOUR(RULEWD);
  2571  CURV:=BASELINE;DVIH:=DVIH+RULEWD;END{:624};13:CURH:=CURH+RULEWD;
  2572  15:P:=MEM[P].HH.RH;END{:622}{:620};PRUNEMOVEMENTS(SAVELOC);
  2573  IF CURS>0 THEN DVIPOP(SAVELOC);CURS:=CURS-1;END;
  2574  {:619}{629:}PROCEDURE VLISTOUT;LABEL 13,14,15;VAR LEFTEDGE:SCALED;
  2575  TOPEDGE:SCALED;SAVEH,SAVEV:SCALED;THISBOX:HALFWORD;GORDER:GLUEORD;
  2576  GSIGN:0..2;P:HALFWORD;SAVELOC:INTEGER;LEADERBOX:HALFWORD;
  2577  LEADERHT:SCALED;LX:SCALED;OUTERDOINGLEADERS:BOOLEAN;EDGE:SCALED;
  2578  GLUETEMP:REAL;CURGLUE:REAL;CURG:SCALED;BEGIN CURG:=0;CURGLUE:=0.0;
  2579  THISBOX:=TEMPPTR;GORDER:=MEM[THISBOX+5].HH.B1;
  2580  GSIGN:=MEM[THISBOX+5].HH.B0;P:=MEM[THISBOX+5].HH.RH;CURS:=CURS+1;
  2581  IF CURS>0 THEN BEGIN DVIBUF[DVIPTR]:=141;DVIPTR:=DVIPTR+1;
  2582  IF DVIPTR=DVILIMIT THEN DVISWAP;END;IF CURS>MAXPUSH THEN MAXPUSH:=CURS;
  2583  SAVELOC:=DVIOFFSET+DVIPTR;LEFTEDGE:=CURH;CURV:=CURV-MEM[THISBOX+3].INT;
  2584  TOPEDGE:=CURV;
  2585  WHILE P<>0 DO{630:}BEGIN IF(P>=HIMEMMIN)THEN CONFUSION(828)ELSE{631:}
  2586  BEGIN CASE MEM[P].HH.B0 OF 0,1:{632:}IF MEM[P+5].HH.RH=0 THEN CURV:=CURV
  2587  +MEM[P+3].INT+MEM[P+2].INT ELSE BEGIN CURV:=CURV+MEM[P+3].INT;
  2588  IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
  2589  SAVEH:=DVIH;SAVEV:=DVIV;CURH:=LEFTEDGE+MEM[P+4].INT;TEMPPTR:=P;
  2590  IF MEM[P].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;DVIH:=SAVEH;DVIV:=SAVEV;
  2591  CURV:=SAVEV+MEM[P+2].INT;CURH:=LEFTEDGE;END{:632};
  2592  2:BEGIN RULEHT:=MEM[P+3].INT;RULEDP:=MEM[P+2].INT;RULEWD:=MEM[P+1].INT;
  2593  GOTO 14;END;8:{1366:}OUTWHAT(P){:1366};10:{634:}BEGIN G:=MEM[P+1].HH.LH;
  2594  RULEHT:=MEM[G+1].INT-CURG;
  2595  IF GSIGN<>0 THEN BEGIN IF GSIGN=1 THEN BEGIN IF MEM[G].HH.B0=GORDER THEN
  2596  BEGIN CURGLUE:=CURGLUE+MEM[G+2].INT;GLUETEMP:=MEM[THISBOX+6].GR*CURGLUE;
  2597  IF GLUETEMP>1000000000.0 THEN GLUETEMP:=1000000000.0 ELSE IF GLUETEMP<
  2598  -1000000000.0 THEN GLUETEMP:=-1000000000.0;CURG:=ROUND(GLUETEMP);END;
  2599  END ELSE IF MEM[G].HH.B1=GORDER THEN BEGIN CURGLUE:=CURGLUE-MEM[G+3].INT
  2600  ;GLUETEMP:=MEM[THISBOX+6].GR*CURGLUE;
  2601  IF GLUETEMP>1000000000.0 THEN GLUETEMP:=1000000000.0 ELSE IF GLUETEMP<
  2602  -1000000000.0 THEN GLUETEMP:=-1000000000.0;CURG:=ROUND(GLUETEMP);END;
  2603  END;RULEHT:=RULEHT+CURG;
  2604  IF MEM[P].HH.B1>=100 THEN{635:}BEGIN LEADERBOX:=MEM[P+1].HH.RH;
  2605  IF MEM[LEADERBOX].HH.B0=2 THEN BEGIN RULEWD:=MEM[LEADERBOX+1].INT;
  2606  RULEDP:=0;GOTO 14;END;
  2607  LEADERHT:=MEM[LEADERBOX+3].INT+MEM[LEADERBOX+2].INT;
  2608  IF(LEADERHT>0)AND(RULEHT>0)THEN BEGIN RULEHT:=RULEHT+10;
  2609  EDGE:=CURV+RULEHT;LX:=0;
  2610  {636:}IF MEM[P].HH.B1=100 THEN BEGIN SAVEV:=CURV;
  2611  CURV:=TOPEDGE+LEADERHT*((CURV-TOPEDGE)DIV LEADERHT);
  2612  IF CURV<SAVEV THEN CURV:=CURV+LEADERHT;
  2613  END ELSE BEGIN LQ:=RULEHT DIV LEADERHT;LR:=RULEHT MOD LEADERHT;
  2614  IF MEM[P].HH.B1=101 THEN CURV:=CURV+(LR DIV 2)ELSE BEGIN LX:=LR DIV(LQ+1
  2615  );CURV:=CURV+((LR-(LQ-1)*LX)DIV 2);END;END{:636};
  2616  WHILE CURV+LEADERHT<=EDGE DO{637:}BEGIN CURH:=LEFTEDGE+MEM[LEADERBOX+4].
  2617  INT;IF CURH<>DVIH THEN BEGIN MOVEMENT(CURH-DVIH,143);DVIH:=CURH;END;
  2618  SAVEH:=DVIH;CURV:=CURV+MEM[LEADERBOX+3].INT;
  2619  IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
  2620  SAVEV:=DVIV;TEMPPTR:=LEADERBOX;OUTERDOINGLEADERS:=DOINGLEADERS;
  2621  DOINGLEADERS:=TRUE;
  2622  IF MEM[LEADERBOX].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;
  2623  DOINGLEADERS:=OUTERDOINGLEADERS;DVIV:=SAVEV;DVIH:=SAVEH;CURH:=LEFTEDGE;
  2624  CURV:=SAVEV-MEM[LEADERBOX+3].INT+LEADERHT+LX;END{:637};CURV:=EDGE-10;
  2625  GOTO 15;END;END{:635};GOTO 13;END{:634};11:CURV:=CURV+MEM[P+1].INT;
  2626  ELSE END;GOTO 15;
  2627  14:{633:}IF(RULEWD=-1073741824)THEN RULEWD:=MEM[THISBOX+1].INT;
  2628  RULEHT:=RULEHT+RULEDP;CURV:=CURV+RULEHT;
  2629  IF(RULEHT>0)AND(RULEWD>0)THEN BEGIN IF CURH<>DVIH THEN BEGIN MOVEMENT(
  2630  CURH-DVIH,143);DVIH:=CURH;END;
  2631  IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
  2632  BEGIN DVIBUF[DVIPTR]:=137;DVIPTR:=DVIPTR+1;
  2633  IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(RULEHT);DVIFOUR(RULEWD);END;
  2634  GOTO 15{:633};13:CURV:=CURV+RULEHT;END{:631};15:P:=MEM[P].HH.RH;
  2635  END{:630};PRUNEMOVEMENTS(SAVELOC);IF CURS>0 THEN DVIPOP(SAVELOC);
  2636  CURS:=CURS-1;END;{:629}{638:}PROCEDURE SHIPOUT(P:HALFWORD);LABEL 30;
  2637  VAR PAGELOC:INTEGER;J,K:0..9;S:POOLPOINTER;OLDSETTING:0..21;
  2638  BEGIN IF EQTB[5297].INT>0 THEN BEGIN PRINTNL(338);PRINTLN;PRINT(829);
  2639  END;IF TERMOFFSET>MAXPRINTLINE-9 THEN PRINTLN ELSE IF(TERMOFFSET>0)OR(
  2640  FILEOFFSET>0)THEN PRINTCHAR(32);PRINTCHAR(91);J:=9;
  2641  WHILE(EQTB[5318+J].INT=0)AND(J>0)DO J:=J-1;
  2642  FOR K:=0 TO J DO BEGIN PRINTINT(EQTB[5318+K].INT);
  2643  IF K<J THEN PRINTCHAR(46);END;;
  2644  IF EQTB[5297].INT>0 THEN BEGIN PRINTCHAR(93);BEGINDIAGNOSTIC;SHOWBOX(P);
  2645  ENDDIAGNOSTIC(TRUE);END;
  2646  {640:}{641:}IF(MEM[P+3].INT>1073741823)OR(MEM[P+2].INT>1073741823)OR(MEM
  2647  [P+3].INT+MEM[P+2].INT+EQTB[5849].INT>1073741823)OR(MEM[P+1].INT+EQTB[
  2648  5848].INT>1073741823)THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  2649  PRINTNL(262);PRINT(833);END;BEGIN HELPPTR:=2;HELPLINE[1]:=834;
  2650  HELPLINE[0]:=835;END;ERROR;
  2651  IF EQTB[5297].INT<=0 THEN BEGIN BEGINDIAGNOSTIC;PRINTNL(836);SHOWBOX(P);
  2652  ENDDIAGNOSTIC(TRUE);END;GOTO 30;END;
  2653  IF MEM[P+3].INT+MEM[P+2].INT+EQTB[5849].INT>MAXV THEN MAXV:=MEM[P+3].INT
  2654  +MEM[P+2].INT+EQTB[5849].INT;
  2655  IF MEM[P+1].INT+EQTB[5848].INT>MAXH THEN MAXH:=MEM[P+1].INT+EQTB[5848].
  2656  INT{:641};{617:}DVIH:=0;DVIV:=0;CURH:=EQTB[5848].INT;DVIF:=0;
  2657  IF OUTPUTFILENAME=0 THEN BEGIN IF JOBNAME=0 THEN OPENLOGFILE;
  2658  PACKJOBNAME(794);WHILE NOT BOPENOUT(DVIFILE)DO PROMPTFILENAME(795,794);
  2659  OUTPUTFILENAME:=BMAKENAMESTRING(DVIFILE);END;
  2660  IF TOTALPAGES=0 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=247;DVIPTR:=DVIPTR+1;
  2661  IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=2;
  2662  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(25400000);
  2663  DVIFOUR(473628672);PREPAREMAG;DVIFOUR(EQTB[5280].INT);
  2664  OLDSETTING:=SELECTOR;SELECTOR:=21;PRINT(827);PRINTINT(EQTB[5286].INT);
  2665  PRINTCHAR(46);PRINTTWO(EQTB[5285].INT);PRINTCHAR(46);
  2666  PRINTTWO(EQTB[5284].INT);PRINTCHAR(58);PRINTTWO(EQTB[5283].INT DIV 60);
  2667  PRINTTWO(EQTB[5283].INT MOD 60);SELECTOR:=OLDSETTING;
  2668  BEGIN DVIBUF[DVIPTR]:=(POOLPTR-STRSTART[STRPTR]);DVIPTR:=DVIPTR+1;
  2669  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2670  FOR S:=STRSTART[STRPTR]TO POOLPTR-1 DO BEGIN DVIBUF[DVIPTR]:=STRPOOL[S];
  2671  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2672  POOLPTR:=STRSTART[STRPTR];END{:617};PAGELOC:=DVIOFFSET+DVIPTR;
  2673  BEGIN DVIBUF[DVIPTR]:=139;DVIPTR:=DVIPTR+1;
  2674  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2675  FOR K:=0 TO 9 DO DVIFOUR(EQTB[5318+K].INT);DVIFOUR(LASTBOP);
  2676  LASTBOP:=PAGELOC;CURV:=MEM[P+3].INT+EQTB[5849].INT;TEMPPTR:=P;
  2677  IF MEM[P].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;BEGIN DVIBUF[DVIPTR]:=140;
  2678  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  2679  TOTALPAGES:=TOTALPAGES+1;CURS:=-1;30:{:640};
  2680  IF EQTB[5297].INT<=0 THEN PRINTCHAR(93);DEADCYCLES:=0;;
  2681  {639:}{IF EQTB[5294].INT>1 THEN BEGIN PRINTNL(830);PRINTINT(VARUSED);
  2682  PRINTCHAR(38);PRINTINT(DYNUSED);PRINTCHAR(59);END;}FLUSHNODELIST(P);
  2683  {IF EQTB[5294].INT>1 THEN BEGIN PRINT(831);PRINTINT(VARUSED);
  2684  PRINTCHAR(38);PRINTINT(DYNUSED);PRINT(832);
  2685  PRINTINT(HIMEMMIN-LOMEMMAX-1);PRINTLN;END;}{:639};END;
  2686  {:638}{645:}PROCEDURE SCANSPEC(C:GROUPCODE;THREECODES:BOOLEAN);LABEL 40;
  2687  VAR S:INTEGER;SPECCODE:0..1;
  2688  BEGIN IF THREECODES THEN S:=SAVESTACK[SAVEPTR+0].INT;
  2689  IF SCANKEYWORD(842)THEN SPECCODE:=0 ELSE IF SCANKEYWORD(843)THEN
  2690  SPECCODE:=1 ELSE BEGIN SPECCODE:=1;CURVAL:=0;GOTO 40;END;
  2691  SCANDIMEN(FALSE,FALSE,FALSE);
  2692  40:IF THREECODES THEN BEGIN SAVESTACK[SAVEPTR+0].INT:=S;
  2693  SAVEPTR:=SAVEPTR+1;END;SAVESTACK[SAVEPTR+0].INT:=SPECCODE;
  2694  SAVESTACK[SAVEPTR+1].INT:=CURVAL;SAVEPTR:=SAVEPTR+2;NEWSAVELEVEL(C);
  2695  SCANLEFTBRACE;END;{:645}{649:}FUNCTION HPACK(P:HALFWORD;W:SCALED;
  2696  M:SMALLNUMBER):HALFWORD;LABEL 21,50,10;VAR R:HALFWORD;Q:HALFWORD;
  2697  H,D,X:SCALED;S:SCALED;G:HALFWORD;O:GLUEORD;F:INTERNALFONTNUMBER;
  2698  I:FOURQUARTERS;HD:EIGHTBITS;BEGIN LASTBADNESS:=0;R:=GETNODE(7);
  2699  MEM[R].HH.B0:=0;MEM[R].HH.B1:=0;MEM[R+4].INT:=0;Q:=R+5;MEM[Q].HH.RH:=P;
  2700  H:=0;{650:}D:=0;X:=0;TOTALSTRETCH[0]:=0;TOTALSHRINK[0]:=0;
  2701  TOTALSTRETCH[1]:=0;TOTALSHRINK[1]:=0;TOTALSTRETCH[2]:=0;
  2702  TOTALSHRINK[2]:=0;TOTALSTRETCH[3]:=0;TOTALSHRINK[3]:=0{:650};
  2703  WHILE P<>0 DO{651:}BEGIN 21:WHILE(P>=HIMEMMIN)DO{654:}BEGIN F:=MEM[P].HH
  2704  .B0;I:=FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ;HD:=I.B1-0;
  2705  X:=X+FONTINFO[WIDTHBASE[F]+I.B0].INT;
  2706  S:=FONTINFO[HEIGHTBASE[F]+(HD)DIV 16].INT;IF S>H THEN H:=S;
  2707  S:=FONTINFO[DEPTHBASE[F]+(HD)MOD 16].INT;IF S>D THEN D:=S;
  2708  P:=MEM[P].HH.RH;END{:654};
  2709  IF P<>0 THEN BEGIN CASE MEM[P].HH.B0 OF 0,1,2,13:{653:}BEGIN X:=X+MEM[P
  2710  +1].INT;IF MEM[P].HH.B0>=2 THEN S:=0 ELSE S:=MEM[P+4].INT;
  2711  IF MEM[P+3].INT-S>H THEN H:=MEM[P+3].INT-S;
  2712  IF MEM[P+2].INT+S>D THEN D:=MEM[P+2].INT+S;END{:653};
  2713  3,4,5:IF ADJUSTTAIL<>0 THEN{655:}BEGIN WHILE MEM[Q].HH.RH<>P DO Q:=MEM[Q
  2714  ].HH.RH;
  2715  IF MEM[P].HH.B0=5 THEN BEGIN MEM[ADJUSTTAIL].HH.RH:=MEM[P+1].INT;
  2716  WHILE MEM[ADJUSTTAIL].HH.RH<>0 DO ADJUSTTAIL:=MEM[ADJUSTTAIL].HH.RH;
  2717  P:=MEM[P].HH.RH;FREENODE(MEM[Q].HH.RH,2);
  2718  END ELSE BEGIN MEM[ADJUSTTAIL].HH.RH:=P;ADJUSTTAIL:=P;P:=MEM[P].HH.RH;
  2719  END;MEM[Q].HH.RH:=P;P:=Q;END{:655};8:{1360:}{:1360};
  2720  10:{656:}BEGIN G:=MEM[P+1].HH.LH;X:=X+MEM[G+1].INT;O:=MEM[G].HH.B0;
  2721  TOTALSTRETCH[O]:=TOTALSTRETCH[O]+MEM[G+2].INT;O:=MEM[G].HH.B1;
  2722  TOTALSHRINK[O]:=TOTALSHRINK[O]+MEM[G+3].INT;
  2723  IF MEM[P].HH.B1>=100 THEN BEGIN G:=MEM[P+1].HH.RH;
  2724  IF MEM[G+3].INT>H THEN H:=MEM[G+3].INT;
  2725  IF MEM[G+2].INT>D THEN D:=MEM[G+2].INT;END;END{:656};
  2726  11,9:X:=X+MEM[P+1].INT;6:{652:}BEGIN MEM[29988]:=MEM[P+1];
  2727  MEM[29988].HH.RH:=MEM[P].HH.RH;P:=29988;GOTO 21;END{:652};ELSE END;
  2728  P:=MEM[P].HH.RH;END;END{:651};
  2729  IF ADJUSTTAIL<>0 THEN MEM[ADJUSTTAIL].HH.RH:=0;MEM[R+3].INT:=H;
  2730  MEM[R+2].INT:=D;{657:}IF M=1 THEN W:=X+W;MEM[R+1].INT:=W;X:=W-X;
  2731  IF X=0 THEN BEGIN MEM[R+5].HH.B0:=0;MEM[R+5].HH.B1:=0;MEM[R+6].GR:=0.0;
  2732  GOTO 10;
  2733  END ELSE IF X>0 THEN{658:}BEGIN{659:}IF TOTALSTRETCH[3]<>0 THEN O:=3
  2734  ELSE IF TOTALSTRETCH[2]<>0 THEN O:=2 ELSE IF TOTALSTRETCH[1]<>0 THEN O:=
  2735  1 ELSE O:=0{:659};MEM[R+5].HH.B1:=O;MEM[R+5].HH.B0:=1;
  2736  IF TOTALSTRETCH[O]<>0 THEN MEM[R+6].GR:=X/TOTALSTRETCH[O]ELSE BEGIN MEM[
  2737  R+5].HH.B0:=0;MEM[R+6].GR:=0.0;END;
  2738  IF O=0 THEN IF MEM[R+5].HH.RH<>0 THEN{660:}BEGIN LASTBADNESS:=BADNESS(X,
  2739  TOTALSTRETCH[0]);IF LASTBADNESS>EQTB[5289].INT THEN BEGIN PRINTLN;
  2740  IF LASTBADNESS>100 THEN PRINTNL(844)ELSE PRINTNL(845);PRINT(846);
  2741  PRINTINT(LASTBADNESS);GOTO 50;END;END{:660};GOTO 10;
  2742  END{:658}ELSE{664:}BEGIN{665:}IF TOTALSHRINK[3]<>0 THEN O:=3 ELSE IF
  2743  TOTALSHRINK[2]<>0 THEN O:=2 ELSE IF TOTALSHRINK[1]<>0 THEN O:=1 ELSE O:=
  2744  0{:665};MEM[R+5].HH.B1:=O;MEM[R+5].HH.B0:=2;
  2745  IF TOTALSHRINK[O]<>0 THEN MEM[R+6].GR:=(-X)/TOTALSHRINK[O]ELSE BEGIN MEM
  2746  [R+5].HH.B0:=0;MEM[R+6].GR:=0.0;END;
  2747  IF(TOTALSHRINK[O]<-X)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN BEGIN
  2748  LASTBADNESS:=1000000;MEM[R+6].GR:=1.0;
  2749  {666:}IF(-X-TOTALSHRINK[0]>EQTB[5838].INT)OR(EQTB[5289].INT<100)THEN
  2750  BEGIN IF(EQTB[5846].INT>0)AND(-X-TOTALSHRINK[0]>EQTB[5838].INT)THEN
  2751  BEGIN WHILE MEM[Q].HH.RH<>0 DO Q:=MEM[Q].HH.RH;MEM[Q].HH.RH:=NEWRULE;
  2752  MEM[MEM[Q].HH.RH+1].INT:=EQTB[5846].INT;END;PRINTLN;PRINTNL(852);
  2753  PRINTSCALED(-X-TOTALSHRINK[0]);PRINT(853);GOTO 50;END{:666};
  2754  END ELSE IF O=0 THEN IF MEM[R+5].HH.RH<>0 THEN{667:}BEGIN LASTBADNESS:=
  2755  BADNESS(-X,TOTALSHRINK[0]);
  2756  IF LASTBADNESS>EQTB[5289].INT THEN BEGIN PRINTLN;PRINTNL(854);
  2757  PRINTINT(LASTBADNESS);GOTO 50;END;END{:667};GOTO 10;END{:664}{:657};
  2758  50:{663:}IF OUTPUTACTIVE THEN PRINT(847)ELSE BEGIN IF PACKBEGINLINE<>0
  2759  THEN BEGIN IF PACKBEGINLINE>0 THEN PRINT(848)ELSE PRINT(849);
  2760  PRINTINT(ABS(PACKBEGINLINE));PRINT(850);END ELSE PRINT(851);
  2761  PRINTINT(LINE);END;PRINTLN;FONTINSHORTDISPLAY:=0;
  2762  SHORTDISPLAY(MEM[R+5].HH.RH);PRINTLN;BEGINDIAGNOSTIC;SHOWBOX(R);
  2763  ENDDIAGNOSTIC(TRUE){:663};10:HPACK:=R;END;
  2764  {:649}{668:}FUNCTION VPACKAGE(P:HALFWORD;H:SCALED;M:SMALLNUMBER;
  2765  L:SCALED):HALFWORD;LABEL 50,10;VAR R:HALFWORD;W,D,X:SCALED;S:SCALED;
  2766  G:HALFWORD;O:GLUEORD;BEGIN LASTBADNESS:=0;R:=GETNODE(7);MEM[R].HH.B0:=1;
  2767  MEM[R].HH.B1:=0;MEM[R+4].INT:=0;MEM[R+5].HH.RH:=P;W:=0;{650:}D:=0;X:=0;
  2768  TOTALSTRETCH[0]:=0;TOTALSHRINK[0]:=0;TOTALSTRETCH[1]:=0;
  2769  TOTALSHRINK[1]:=0;TOTALSTRETCH[2]:=0;TOTALSHRINK[2]:=0;
  2770  TOTALSTRETCH[3]:=0;TOTALSHRINK[3]:=0{:650};
  2771  WHILE P<>0 DO{669:}BEGIN IF(P>=HIMEMMIN)THEN CONFUSION(855)ELSE CASE MEM
  2772  [P].HH.B0 OF 0,1,2,13:{670:}BEGIN X:=X+D+MEM[P+3].INT;D:=MEM[P+2].INT;
  2773  IF MEM[P].HH.B0>=2 THEN S:=0 ELSE S:=MEM[P+4].INT;
  2774  IF MEM[P+1].INT+S>W THEN W:=MEM[P+1].INT+S;END{:670};8:{1359:}{:1359};
  2775  10:{671:}BEGIN X:=X+D;D:=0;G:=MEM[P+1].HH.LH;X:=X+MEM[G+1].INT;
  2776  O:=MEM[G].HH.B0;TOTALSTRETCH[O]:=TOTALSTRETCH[O]+MEM[G+2].INT;
  2777  O:=MEM[G].HH.B1;TOTALSHRINK[O]:=TOTALSHRINK[O]+MEM[G+3].INT;
  2778  IF MEM[P].HH.B1>=100 THEN BEGIN G:=MEM[P+1].HH.RH;
  2779  IF MEM[G+1].INT>W THEN W:=MEM[G+1].INT;END;END{:671};
  2780  11:BEGIN X:=X+D+MEM[P+1].INT;D:=0;END;ELSE END;P:=MEM[P].HH.RH;
  2781  END{:669};MEM[R+1].INT:=W;IF D>L THEN BEGIN X:=X+D-L;MEM[R+2].INT:=L;
  2782  END ELSE MEM[R+2].INT:=D;{672:}IF M=1 THEN H:=X+H;MEM[R+3].INT:=H;
  2783  X:=H-X;IF X=0 THEN BEGIN MEM[R+5].HH.B0:=0;MEM[R+5].HH.B1:=0;
  2784  MEM[R+6].GR:=0.0;GOTO 10;
  2785  END ELSE IF X>0 THEN{673:}BEGIN{659:}IF TOTALSTRETCH[3]<>0 THEN O:=3
  2786  ELSE IF TOTALSTRETCH[2]<>0 THEN O:=2 ELSE IF TOTALSTRETCH[1]<>0 THEN O:=
  2787  1 ELSE O:=0{:659};MEM[R+5].HH.B1:=O;MEM[R+5].HH.B0:=1;
  2788  IF TOTALSTRETCH[O]<>0 THEN MEM[R+6].GR:=X/TOTALSTRETCH[O]ELSE BEGIN MEM[
  2789  R+5].HH.B0:=0;MEM[R+6].GR:=0.0;END;
  2790  IF O=0 THEN IF MEM[R+5].HH.RH<>0 THEN{674:}BEGIN LASTBADNESS:=BADNESS(X,
  2791  TOTALSTRETCH[0]);IF LASTBADNESS>EQTB[5290].INT THEN BEGIN PRINTLN;
  2792  IF LASTBADNESS>100 THEN PRINTNL(844)ELSE PRINTNL(845);PRINT(856);
  2793  PRINTINT(LASTBADNESS);GOTO 50;END;END{:674};GOTO 10;
  2794  END{:673}ELSE{676:}BEGIN{665:}IF TOTALSHRINK[3]<>0 THEN O:=3 ELSE IF
  2795  TOTALSHRINK[2]<>0 THEN O:=2 ELSE IF TOTALSHRINK[1]<>0 THEN O:=1 ELSE O:=
  2796  0{:665};MEM[R+5].HH.B1:=O;MEM[R+5].HH.B0:=2;
  2797  IF TOTALSHRINK[O]<>0 THEN MEM[R+6].GR:=(-X)/TOTALSHRINK[O]ELSE BEGIN MEM
  2798  [R+5].HH.B0:=0;MEM[R+6].GR:=0.0;END;
  2799  IF(TOTALSHRINK[O]<-X)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN BEGIN
  2800  LASTBADNESS:=1000000;MEM[R+6].GR:=1.0;
  2801  {677:}IF(-X-TOTALSHRINK[0]>EQTB[5839].INT)OR(EQTB[5290].INT<100)THEN
  2802  BEGIN PRINTLN;PRINTNL(857);PRINTSCALED(-X-TOTALSHRINK[0]);PRINT(858);
  2803  GOTO 50;END{:677};
  2804  END ELSE IF O=0 THEN IF MEM[R+5].HH.RH<>0 THEN{678:}BEGIN LASTBADNESS:=
  2805  BADNESS(-X,TOTALSHRINK[0]);
  2806  IF LASTBADNESS>EQTB[5290].INT THEN BEGIN PRINTLN;PRINTNL(859);
  2807  PRINTINT(LASTBADNESS);GOTO 50;END;END{:678};GOTO 10;END{:676}{:672};
  2808  50:{675:}IF OUTPUTACTIVE THEN PRINT(847)ELSE BEGIN IF PACKBEGINLINE<>0
  2809  THEN BEGIN PRINT(849);PRINTINT(ABS(PACKBEGINLINE));PRINT(850);
  2810  END ELSE PRINT(851);PRINTINT(LINE);PRINTLN;END;BEGINDIAGNOSTIC;
  2811  SHOWBOX(R);ENDDIAGNOSTIC(TRUE){:675};10:VPACKAGE:=R;END;
  2812  {:668}{679:}PROCEDURE APPENDTOVLIST(B:HALFWORD);VAR D:SCALED;P:HALFWORD;
  2813  BEGIN IF CURLIST.AUXFIELD.INT>-65536000 THEN BEGIN D:=MEM[EQTB[2883].HH.
  2814  RH+1].INT-CURLIST.AUXFIELD.INT-MEM[B+3].INT;
  2815  IF D<EQTB[5832].INT THEN P:=NEWPARAMGLUE(0)ELSE BEGIN P:=NEWSKIPPARAM(1)
  2816  ;MEM[TEMPPTR+1].INT:=D;END;MEM[CURLIST.TAILFIELD].HH.RH:=P;
  2817  CURLIST.TAILFIELD:=P;END;MEM[CURLIST.TAILFIELD].HH.RH:=B;
  2818  CURLIST.TAILFIELD:=B;CURLIST.AUXFIELD.INT:=MEM[B+2].INT;END;
  2819  {:679}{686:}FUNCTION NEWNOAD:HALFWORD;VAR P:HALFWORD;
  2820  BEGIN P:=GETNODE(4);MEM[P].HH.B0:=16;MEM[P].HH.B1:=0;
  2821  MEM[P+1].HH:=EMPTYFIELD;MEM[P+3].HH:=EMPTYFIELD;MEM[P+2].HH:=EMPTYFIELD;
  2822  NEWNOAD:=P;END;{:686}{688:}FUNCTION NEWSTYLE(S:SMALLNUMBER):HALFWORD;
  2823  VAR P:HALFWORD;BEGIN P:=GETNODE(3);MEM[P].HH.B0:=14;MEM[P].HH.B1:=S;
  2824  MEM[P+1].INT:=0;MEM[P+2].INT:=0;NEWSTYLE:=P;END;
  2825  {:688}{689:}FUNCTION NEWCHOICE:HALFWORD;VAR P:HALFWORD;
  2826  BEGIN P:=GETNODE(3);MEM[P].HH.B0:=15;MEM[P].HH.B1:=0;MEM[P+1].HH.LH:=0;
  2827  MEM[P+1].HH.RH:=0;MEM[P+2].HH.LH:=0;MEM[P+2].HH.RH:=0;NEWCHOICE:=P;END;
  2828  {:689}{693:}PROCEDURE SHOWINFO;BEGIN SHOWNODELIST(MEM[TEMPPTR].HH.LH);
  2829  END;{:693}{704:}FUNCTION FRACTIONRULE(T:SCALED):HALFWORD;VAR P:HALFWORD;
  2830  BEGIN P:=NEWRULE;MEM[P+3].INT:=T;MEM[P+2].INT:=0;FRACTIONRULE:=P;END;
  2831  {:704}{705:}FUNCTION OVERBAR(B:HALFWORD;K,T:SCALED):HALFWORD;
  2832  VAR P,Q:HALFWORD;BEGIN P:=NEWKERN(K);MEM[P].HH.RH:=B;Q:=FRACTIONRULE(T);
  2833  MEM[Q].HH.RH:=P;P:=NEWKERN(T);MEM[P].HH.RH:=Q;
  2834  OVERBAR:=VPACKAGE(P,0,1,1073741823);END;
  2835  {:705}{706:}{709:}FUNCTION CHARBOX(F:INTERNALFONTNUMBER;
  2836  C:QUARTERWORD):HALFWORD;VAR Q:FOURQUARTERS;HD:EIGHTBITS;B,P:HALFWORD;
  2837  BEGIN Q:=FONTINFO[CHARBASE[F]+C].QQQQ;HD:=Q.B1-0;B:=NEWNULLBOX;
  2838  MEM[B+1].INT:=FONTINFO[WIDTHBASE[F]+Q.B0].INT+FONTINFO[ITALICBASE[F]+(Q.
  2839  B2-0)DIV 4].INT;MEM[B+3].INT:=FONTINFO[HEIGHTBASE[F]+(HD)DIV 16].INT;
  2840  MEM[B+2].INT:=FONTINFO[DEPTHBASE[F]+(HD)MOD 16].INT;P:=GETAVAIL;
  2841  MEM[P].HH.B1:=C;MEM[P].HH.B0:=F;MEM[B+5].HH.RH:=P;CHARBOX:=B;END;
  2842  {:709}{711:}PROCEDURE STACKINTOBOX(B:HALFWORD;F:INTERNALFONTNUMBER;
  2843  C:QUARTERWORD);VAR P:HALFWORD;BEGIN P:=CHARBOX(F,C);
  2844  MEM[P].HH.RH:=MEM[B+5].HH.RH;MEM[B+5].HH.RH:=P;
  2845  MEM[B+3].INT:=MEM[P+3].INT;END;
  2846  {:711}{712:}FUNCTION HEIGHTPLUSDEPTH(F:INTERNALFONTNUMBER;
  2847  C:QUARTERWORD):SCALED;VAR Q:FOURQUARTERS;HD:EIGHTBITS;
  2848  BEGIN Q:=FONTINFO[CHARBASE[F]+C].QQQQ;HD:=Q.B1-0;
  2849  HEIGHTPLUSDEPTH:=FONTINFO[HEIGHTBASE[F]+(HD)DIV 16].INT+FONTINFO[
  2850  DEPTHBASE[F]+(HD)MOD 16].INT;END;{:712}FUNCTION VARDELIMITER(D:HALFWORD;
  2851  S:SMALLNUMBER;V:SCALED):HALFWORD;LABEL 40,22;VAR B:HALFWORD;
  2852  F,G:INTERNALFONTNUMBER;C,X,Y:QUARTERWORD;M,N:INTEGER;U:SCALED;W:SCALED;
  2853  Q:FOURQUARTERS;HD:EIGHTBITS;R:FOURQUARTERS;Z:SMALLNUMBER;
  2854  LARGEATTEMPT:BOOLEAN;BEGIN F:=0;W:=0;LARGEATTEMPT:=FALSE;
  2855  Z:=MEM[D].QQQQ.B0;X:=MEM[D].QQQQ.B1;
  2856  WHILE TRUE DO BEGIN{707:}IF(Z<>0)OR(X<>0)THEN BEGIN Z:=Z+S+16;
  2857  REPEAT Z:=Z-16;G:=EQTB[3935+Z].HH.RH;IF G<>0 THEN{708:}BEGIN Y:=X;
  2858  IF(Y-0>=FONTBC[G])AND(Y-0<=FONTEC[G])THEN BEGIN 22:Q:=FONTINFO[CHARBASE[
  2859  G]+Y].QQQQ;IF(Q.B0>0)THEN BEGIN IF((Q.B2-0)MOD 4)=3 THEN BEGIN F:=G;
  2860  C:=Y;GOTO 40;END;HD:=Q.B1-0;
  2861  U:=FONTINFO[HEIGHTBASE[G]+(HD)DIV 16].INT+FONTINFO[DEPTHBASE[G]+(HD)MOD
  2862  16].INT;IF U>W THEN BEGIN F:=G;C:=Y;W:=U;IF U>=V THEN GOTO 40;END;
  2863  IF((Q.B2-0)MOD 4)=2 THEN BEGIN Y:=Q.B3;GOTO 22;END;END;END;END{:708};
  2864  UNTIL Z<16;END{:707};IF LARGEATTEMPT THEN GOTO 40;LARGEATTEMPT:=TRUE;
  2865  Z:=MEM[D].QQQQ.B2;X:=MEM[D].QQQQ.B3;END;
  2866  40:IF F<>0 THEN{710:}IF((Q.B2-0)MOD 4)=3 THEN{713:}BEGIN B:=NEWNULLBOX;
  2867  MEM[B].HH.B0:=1;R:=FONTINFO[EXTENBASE[F]+Q.B3].QQQQ;{714:}C:=R.B3;
  2868  U:=HEIGHTPLUSDEPTH(F,C);W:=0;Q:=FONTINFO[CHARBASE[F]+C].QQQQ;
  2869  MEM[B+1].INT:=FONTINFO[WIDTHBASE[F]+Q.B0].INT+FONTINFO[ITALICBASE[F]+(Q.
  2870  B2-0)DIV 4].INT;C:=R.B2;IF C<>0 THEN W:=W+HEIGHTPLUSDEPTH(F,C);C:=R.B1;
  2871  IF C<>0 THEN W:=W+HEIGHTPLUSDEPTH(F,C);C:=R.B0;
  2872  IF C<>0 THEN W:=W+HEIGHTPLUSDEPTH(F,C);N:=0;
  2873  IF U>0 THEN WHILE W<V DO BEGIN W:=W+U;N:=N+1;IF R.B1<>0 THEN W:=W+U;
  2874  END{:714};C:=R.B2;IF C<>0 THEN STACKINTOBOX(B,F,C);C:=R.B3;
  2875  FOR M:=1 TO N DO STACKINTOBOX(B,F,C);C:=R.B1;
  2876  IF C<>0 THEN BEGIN STACKINTOBOX(B,F,C);C:=R.B3;
  2877  FOR M:=1 TO N DO STACKINTOBOX(B,F,C);END;C:=R.B0;
  2878  IF C<>0 THEN STACKINTOBOX(B,F,C);MEM[B+2].INT:=W-MEM[B+3].INT;
  2879  END{:713}ELSE B:=CHARBOX(F,C){:710}ELSE BEGIN B:=NEWNULLBOX;
  2880  MEM[B+1].INT:=EQTB[5841].INT;END;
  2881  MEM[B+4].INT:=HALF(MEM[B+3].INT-MEM[B+2].INT)-FONTINFO[22+PARAMBASE[EQTB
  2882  [3937+S].HH.RH]].INT;VARDELIMITER:=B;END;
  2883  {:706}{715:}FUNCTION REBOX(B:HALFWORD;W:SCALED):HALFWORD;VAR P:HALFWORD;
  2884  F:INTERNALFONTNUMBER;V:SCALED;
  2885  BEGIN IF(MEM[B+1].INT<>W)AND(MEM[B+5].HH.RH<>0)THEN BEGIN IF MEM[B].HH.
  2886  B0=1 THEN B:=HPACK(B,0,1);P:=MEM[B+5].HH.RH;
  2887  IF((P>=HIMEMMIN))AND(MEM[P].HH.RH=0)THEN BEGIN F:=MEM[P].HH.B0;
  2888  V:=FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ.B0].INT
  2889  ;IF V<>MEM[B+1].INT THEN MEM[P].HH.RH:=NEWKERN(MEM[B+1].INT-V);END;
  2890  FREENODE(B,7);B:=NEWGLUE(12);MEM[B].HH.RH:=P;
  2891  WHILE MEM[P].HH.RH<>0 DO P:=MEM[P].HH.RH;MEM[P].HH.RH:=NEWGLUE(12);
  2892  REBOX:=HPACK(B,W,0);END ELSE BEGIN MEM[B+1].INT:=W;REBOX:=B;END;END;
  2893  {:715}{716:}FUNCTION MATHGLUE(G:HALFWORD;M:SCALED):HALFWORD;
  2894  VAR P:HALFWORD;N:INTEGER;F:SCALED;BEGIN N:=XOVERN(M,65536);F:=REMAINDER;
  2895  IF F<0 THEN BEGIN N:=N-1;F:=F+65536;END;P:=GETNODE(4);
  2896  MEM[P+1].INT:=MULTANDADD(N,MEM[G+1].INT,XNOVERD(MEM[G+1].INT,F,65536),
  2897  1073741823);MEM[P].HH.B0:=MEM[G].HH.B0;
  2898  IF MEM[P].HH.B0=0 THEN MEM[P+2].INT:=MULTANDADD(N,MEM[G+2].INT,XNOVERD(
  2899  MEM[G+2].INT,F,65536),1073741823)ELSE MEM[P+2].INT:=MEM[G+2].INT;
  2900  MEM[P].HH.B1:=MEM[G].HH.B1;
  2901  IF MEM[P].HH.B1=0 THEN MEM[P+3].INT:=MULTANDADD(N,MEM[G+3].INT,XNOVERD(
  2902  MEM[G+3].INT,F,65536),1073741823)ELSE MEM[P+3].INT:=MEM[G+3].INT;
  2903  MATHGLUE:=P;END;{:716}{717:}PROCEDURE MATHKERN(P:HALFWORD;M:SCALED);
  2904  VAR N:INTEGER;F:SCALED;
  2905  BEGIN IF MEM[P].HH.B1=99 THEN BEGIN N:=XOVERN(M,65536);F:=REMAINDER;
  2906  IF F<0 THEN BEGIN N:=N-1;F:=F+65536;END;
  2907  MEM[P+1].INT:=MULTANDADD(N,MEM[P+1].INT,XNOVERD(MEM[P+1].INT,F,65536),
  2908  1073741823);MEM[P].HH.B1:=1;END;END;{:717}{718:}PROCEDURE FLUSHMATH;
  2909  BEGIN FLUSHNODELIST(MEM[CURLIST.HEADFIELD].HH.RH);
  2910  FLUSHNODELIST(CURLIST.AUXFIELD.INT);MEM[CURLIST.HEADFIELD].HH.RH:=0;
  2911  CURLIST.TAILFIELD:=CURLIST.HEADFIELD;CURLIST.AUXFIELD.INT:=0;END;
  2912  {:718}{720:}PROCEDURE MLISTTOHLIST;FORWARD;FUNCTION CLEANBOX(P:HALFWORD;
  2913  S:SMALLNUMBER):HALFWORD;LABEL 40;VAR Q:HALFWORD;SAVESTYLE:SMALLNUMBER;
  2914  X:HALFWORD;R:HALFWORD;
  2915  BEGIN CASE MEM[P].HH.RH OF 1:BEGIN CURMLIST:=NEWNOAD;
  2916  MEM[CURMLIST+1]:=MEM[P];END;2:BEGIN Q:=MEM[P].HH.LH;GOTO 40;END;
  2917  3:CURMLIST:=MEM[P].HH.LH;ELSE BEGIN Q:=NEWNULLBOX;GOTO 40;END END;
  2918  SAVESTYLE:=CURSTYLE;CURSTYLE:=S;MLISTPENALTIES:=FALSE;MLISTTOHLIST;
  2919  Q:=MEM[29997].HH.RH;CURSTYLE:=SAVESTYLE;
  2920  {703:}BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)
  2921  DIV 2);
  2922  CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT,18);
  2923  END{:703};
  2924  40:IF(Q>=HIMEMMIN)OR(Q=0)THEN X:=HPACK(Q,0,1)ELSE IF(MEM[Q].HH.RH=0)AND(
  2925  MEM[Q].HH.B0<=1)AND(MEM[Q+4].INT=0)THEN X:=Q ELSE X:=HPACK(Q,0,1);
  2926  {721:}Q:=MEM[X+5].HH.RH;IF(Q>=HIMEMMIN)THEN BEGIN R:=MEM[Q].HH.RH;
  2927  IF R<>0 THEN IF MEM[R].HH.RH=0 THEN IF NOT(R>=HIMEMMIN)THEN IF MEM[R].HH
  2928  .B0=11 THEN BEGIN FREENODE(R,2);MEM[Q].HH.RH:=0;END;END{:721};
  2929  CLEANBOX:=X;END;{:720}{722:}PROCEDURE FETCH(A:HALFWORD);
  2930  BEGIN CURC:=MEM[A].HH.B1;CURF:=EQTB[3935+MEM[A].HH.B0+CURSIZE].HH.RH;
  2931  IF CURF=0 THEN{723:}BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  2932  PRINT(338);END;PRINTSIZE(CURSIZE);PRINTCHAR(32);PRINTINT(MEM[A].HH.B0);
  2933  PRINT(884);PRINT(CURC-0);PRINTCHAR(41);BEGIN HELPPTR:=4;
  2934  HELPLINE[3]:=885;HELPLINE[2]:=886;HELPLINE[1]:=887;HELPLINE[0]:=888;END;
  2935  ERROR;CURI:=NULLCHARACTER;MEM[A].HH.RH:=0;
  2936  END{:723}ELSE BEGIN IF(CURC-0>=FONTBC[CURF])AND(CURC-0<=FONTEC[CURF])
  2937  THEN CURI:=FONTINFO[CHARBASE[CURF]+CURC].QQQQ ELSE CURI:=NULLCHARACTER;
  2938  IF NOT((CURI.B0>0))THEN BEGIN CHARWARNING(CURF,CURC-0);MEM[A].HH.RH:=0;
  2939  CURI:=NULLCHARACTER;END;END;END;
  2940  {:722}{726:}{734:}PROCEDURE MAKEOVER(Q:HALFWORD);
  2941  BEGIN MEM[Q+1].HH.LH:=OVERBAR(CLEANBOX(Q+1,2*(CURSTYLE DIV 2)+1),3*
  2942  FONTINFO[8+PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT,FONTINFO[8+PARAMBASE
  2943  [EQTB[3938+CURSIZE].HH.RH]].INT);MEM[Q+1].HH.RH:=2;END;
  2944  {:734}{735:}PROCEDURE MAKEUNDER(Q:HALFWORD);VAR P,X,Y:HALFWORD;
  2945  DELTA:SCALED;BEGIN X:=CLEANBOX(Q+1,CURSTYLE);
  2946  P:=NEWKERN(3*FONTINFO[8+PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT);
  2947  MEM[X].HH.RH:=P;
  2948  MEM[P].HH.RH:=FRACTIONRULE(FONTINFO[8+PARAMBASE[EQTB[3938+CURSIZE].HH.RH
  2949  ]].INT);Y:=VPACKAGE(X,0,1,1073741823);
  2950  DELTA:=MEM[Y+3].INT+MEM[Y+2].INT+FONTINFO[8+PARAMBASE[EQTB[3938+CURSIZE]
  2951  .HH.RH]].INT;MEM[Y+3].INT:=MEM[X+3].INT;
  2952  MEM[Y+2].INT:=DELTA-MEM[Y+3].INT;MEM[Q+1].HH.LH:=Y;MEM[Q+1].HH.RH:=2;
  2953  END;{:735}{736:}PROCEDURE MAKEVCENTER(Q:HALFWORD);VAR V:HALFWORD;
  2954  DELTA:SCALED;BEGIN V:=MEM[Q+1].HH.LH;
  2955  IF MEM[V].HH.B0<>1 THEN CONFUSION(539);DELTA:=MEM[V+3].INT+MEM[V+2].INT;
  2956  MEM[V+3].INT:=FONTINFO[22+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT+HALF(
  2957  DELTA);MEM[V+2].INT:=DELTA-MEM[V+3].INT;END;
  2958  {:736}{737:}PROCEDURE MAKERADICAL(Q:HALFWORD);VAR X,Y:HALFWORD;
  2959  DELTA,CLR:SCALED;BEGIN X:=CLEANBOX(Q+1,2*(CURSTYLE DIV 2)+1);
  2960  IF CURSTYLE<2 THEN CLR:=FONTINFO[8+PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].
  2961  INT+(ABS(FONTINFO[5+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT)DIV 4)ELSE
  2962  BEGIN CLR:=FONTINFO[8+PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT;
  2963  CLR:=CLR+(ABS(CLR)DIV 4);END;
  2964  Y:=VARDELIMITER(Q+4,CURSIZE,MEM[X+3].INT+MEM[X+2].INT+CLR+FONTINFO[8+
  2965  PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT);
  2966  DELTA:=MEM[Y+2].INT-(MEM[X+3].INT+MEM[X+2].INT+CLR);
  2967  IF DELTA>0 THEN CLR:=CLR+HALF(DELTA);MEM[Y+4].INT:=-(MEM[X+3].INT+CLR);
  2968  MEM[Y].HH.RH:=OVERBAR(X,CLR,MEM[Y+3].INT);MEM[Q+1].HH.LH:=HPACK(Y,0,1);
  2969  MEM[Q+1].HH.RH:=2;END;{:737}{738:}PROCEDURE MAKEMATHACCENT(Q:HALFWORD);
  2970  LABEL 30,31;VAR P,X,Y:HALFWORD;A:INTEGER;C:QUARTERWORD;
  2971  F:INTERNALFONTNUMBER;I:FOURQUARTERS;S:SCALED;H:SCALED;DELTA:SCALED;
  2972  W:SCALED;BEGIN FETCH(Q+4);IF(CURI.B0>0)THEN BEGIN I:=CURI;C:=CURC;
  2973  F:=CURF;{741:}S:=0;IF MEM[Q+1].HH.RH=1 THEN BEGIN FETCH(Q+1);
  2974  IF((CURI.B2-0)MOD 4)=1 THEN BEGIN A:=LIGKERNBASE[CURF]+CURI.B3;
  2975  CURI:=FONTINFO[A].QQQQ;
  2976  IF CURI.B0>128 THEN BEGIN A:=LIGKERNBASE[CURF]+256*CURI.B2+CURI.B3
  2977  +32768-256*(128);CURI:=FONTINFO[A].QQQQ;END;
  2978  WHILE TRUE DO BEGIN IF CURI.B1-0=SKEWCHAR[CURF]THEN BEGIN IF CURI.B2>=
  2979  128 THEN IF CURI.B0<=128 THEN S:=FONTINFO[KERNBASE[CURF]+256*CURI.B2+
  2980  CURI.B3].INT;GOTO 31;END;IF CURI.B0>=128 THEN GOTO 31;A:=A+CURI.B0+1;
  2981  CURI:=FONTINFO[A].QQQQ;END;END;END;31:{:741};
  2982  X:=CLEANBOX(Q+1,2*(CURSTYLE DIV 2)+1);W:=MEM[X+1].INT;H:=MEM[X+3].INT;
  2983  {740:}WHILE TRUE DO BEGIN IF((I.B2-0)MOD 4)<>2 THEN GOTO 30;Y:=I.B3;
  2984  I:=FONTINFO[CHARBASE[F]+Y].QQQQ;IF NOT(I.B0>0)THEN GOTO 30;
  2985  IF FONTINFO[WIDTHBASE[F]+I.B0].INT>W THEN GOTO 30;C:=Y;END;30:{:740};
  2986  IF H<FONTINFO[5+PARAMBASE[F]].INT THEN DELTA:=H ELSE DELTA:=FONTINFO[5+
  2987  PARAMBASE[F]].INT;
  2988  IF(MEM[Q+2].HH.RH<>0)OR(MEM[Q+3].HH.RH<>0)THEN IF MEM[Q+1].HH.RH=1 THEN
  2989  {742:}BEGIN FLUSHNODELIST(X);X:=NEWNOAD;MEM[X+1]:=MEM[Q+1];
  2990  MEM[X+2]:=MEM[Q+2];MEM[X+3]:=MEM[Q+3];MEM[Q+2].HH:=EMPTYFIELD;
  2991  MEM[Q+3].HH:=EMPTYFIELD;MEM[Q+1].HH.RH:=3;MEM[Q+1].HH.LH:=X;
  2992  X:=CLEANBOX(Q+1,CURSTYLE);DELTA:=DELTA+MEM[X+3].INT-H;H:=MEM[X+3].INT;
  2993  END{:742};Y:=CHARBOX(F,C);MEM[Y+4].INT:=S+HALF(W-MEM[Y+1].INT);
  2994  MEM[Y+1].INT:=0;P:=NEWKERN(-DELTA);MEM[P].HH.RH:=X;MEM[Y].HH.RH:=P;
  2995  Y:=VPACKAGE(Y,0,1,1073741823);MEM[Y+1].INT:=MEM[X+1].INT;
  2996  IF MEM[Y+3].INT<H THEN{739:}BEGIN P:=NEWKERN(H-MEM[Y+3].INT);
  2997  MEM[P].HH.RH:=MEM[Y+5].HH.RH;MEM[Y+5].HH.RH:=P;MEM[Y+3].INT:=H;
  2998  END{:739};MEM[Q+1].HH.LH:=Y;MEM[Q+1].HH.RH:=2;END;END;
  2999  {:738}{743:}PROCEDURE MAKEFRACTION(Q:HALFWORD);VAR P,V,X,Y,Z:HALFWORD;
  3000  DELTA,DELTA1,DELTA2,SHIFTUP,SHIFTDOWN,CLR:SCALED;
  3001  BEGIN IF MEM[Q+1].INT=1073741824 THEN MEM[Q+1].INT:=FONTINFO[8+PARAMBASE
  3002  [EQTB[3938+CURSIZE].HH.RH]].INT;
  3003  {744:}X:=CLEANBOX(Q+2,CURSTYLE+2-2*(CURSTYLE DIV 6));
  3004  Z:=CLEANBOX(Q+3,2*(CURSTYLE DIV 2)+3-2*(CURSTYLE DIV 6));
  3005  IF MEM[X+1].INT<MEM[Z+1].INT THEN X:=REBOX(X,MEM[Z+1].INT)ELSE Z:=REBOX(
  3006  Z,MEM[X+1].INT);
  3007  IF CURSTYLE<2 THEN BEGIN SHIFTUP:=FONTINFO[8+PARAMBASE[EQTB[3937+CURSIZE
  3008  ].HH.RH]].INT;
  3009  SHIFTDOWN:=FONTINFO[11+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT;
  3010  END ELSE BEGIN SHIFTDOWN:=FONTINFO[12+PARAMBASE[EQTB[3937+CURSIZE].HH.RH
  3011  ]].INT;
  3012  IF MEM[Q+1].INT<>0 THEN SHIFTUP:=FONTINFO[9+PARAMBASE[EQTB[3937+CURSIZE]
  3013  .HH.RH]].INT ELSE SHIFTUP:=FONTINFO[10+PARAMBASE[EQTB[3937+CURSIZE].HH.
  3014  RH]].INT;END{:744};
  3015  IF MEM[Q+1].INT=0 THEN{745:}BEGIN IF CURSTYLE<2 THEN CLR:=7*FONTINFO[8+
  3016  PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT ELSE CLR:=3*FONTINFO[8+
  3017  PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT;
  3018  DELTA:=HALF(CLR-((SHIFTUP-MEM[X+2].INT)-(MEM[Z+3].INT-SHIFTDOWN)));
  3019  IF DELTA>0 THEN BEGIN SHIFTUP:=SHIFTUP+DELTA;SHIFTDOWN:=SHIFTDOWN+DELTA;
  3020  END;
  3021  END{:745}ELSE{746:}BEGIN IF CURSTYLE<2 THEN CLR:=3*MEM[Q+1].INT ELSE CLR
  3022  :=MEM[Q+1].INT;DELTA:=HALF(MEM[Q+1].INT);
  3023  DELTA1:=CLR-((SHIFTUP-MEM[X+2].INT)-(FONTINFO[22+PARAMBASE[EQTB[3937+
  3024  CURSIZE].HH.RH]].INT+DELTA));
  3025  DELTA2:=CLR-((FONTINFO[22+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT-DELTA
  3026  )-(MEM[Z+3].INT-SHIFTDOWN));IF DELTA1>0 THEN SHIFTUP:=SHIFTUP+DELTA1;
  3027  IF DELTA2>0 THEN SHIFTDOWN:=SHIFTDOWN+DELTA2;END{:746};
  3028  {747:}V:=NEWNULLBOX;MEM[V].HH.B0:=1;MEM[V+3].INT:=SHIFTUP+MEM[X+3].INT;
  3029  MEM[V+2].INT:=MEM[Z+2].INT+SHIFTDOWN;MEM[V+1].INT:=MEM[X+1].INT;
  3030  IF MEM[Q+1].INT=0 THEN BEGIN P:=NEWKERN((SHIFTUP-MEM[X+2].INT)-(MEM[Z+3]
  3031  .INT-SHIFTDOWN));MEM[P].HH.RH:=Z;
  3032  END ELSE BEGIN Y:=FRACTIONRULE(MEM[Q+1].INT);
  3033  P:=NEWKERN((FONTINFO[22+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT-DELTA)-
  3034  (MEM[Z+3].INT-SHIFTDOWN));MEM[Y].HH.RH:=P;MEM[P].HH.RH:=Z;
  3035  P:=NEWKERN((SHIFTUP-MEM[X+2].INT)-(FONTINFO[22+PARAMBASE[EQTB[3937+
  3036  CURSIZE].HH.RH]].INT+DELTA));MEM[P].HH.RH:=Y;END;MEM[X].HH.RH:=P;
  3037  MEM[V+5].HH.RH:=X{:747};
  3038  {748:}IF CURSTYLE<2 THEN DELTA:=FONTINFO[20+PARAMBASE[EQTB[3937+CURSIZE]
  3039  .HH.RH]].INT ELSE DELTA:=FONTINFO[21+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]
  3040  ].INT;X:=VARDELIMITER(Q+4,CURSIZE,DELTA);MEM[X].HH.RH:=V;
  3041  Z:=VARDELIMITER(Q+5,CURSIZE,DELTA);MEM[V].HH.RH:=Z;
  3042  MEM[Q+1].INT:=HPACK(X,0,1){:748};END;
  3043  {:743}{749:}FUNCTION MAKEOP(Q:HALFWORD):SCALED;VAR DELTA:SCALED;
  3044  P,V,X,Y,Z:HALFWORD;C:QUARTERWORD;I:FOURQUARTERS;
  3045  SHIFTUP,SHIFTDOWN:SCALED;
  3046  BEGIN IF(MEM[Q].HH.B1=0)AND(CURSTYLE<2)THEN MEM[Q].HH.B1:=1;
  3047  IF MEM[Q+1].HH.RH=1 THEN BEGIN FETCH(Q+1);
  3048  IF(CURSTYLE<2)AND(((CURI.B2-0)MOD 4)=2)THEN BEGIN C:=CURI.B3;
  3049  I:=FONTINFO[CHARBASE[CURF]+C].QQQQ;IF(I.B0>0)THEN BEGIN CURC:=C;CURI:=I;
  3050  MEM[Q+1].HH.B1:=C;END;END;
  3051  DELTA:=FONTINFO[ITALICBASE[CURF]+(CURI.B2-0)DIV 4].INT;
  3052  X:=CLEANBOX(Q+1,CURSTYLE);
  3053  IF(MEM[Q+3].HH.RH<>0)AND(MEM[Q].HH.B1<>1)THEN MEM[X+1].INT:=MEM[X+1].INT
  3054  -DELTA;
  3055  MEM[X+4].INT:=HALF(MEM[X+3].INT-MEM[X+2].INT)-FONTINFO[22+PARAMBASE[EQTB
  3056  [3937+CURSIZE].HH.RH]].INT;MEM[Q+1].HH.RH:=2;MEM[Q+1].HH.LH:=X;
  3057  END ELSE DELTA:=0;
  3058  IF MEM[Q].HH.B1=1 THEN{750:}BEGIN X:=CLEANBOX(Q+2,2*(CURSTYLE DIV 4)+4+(
  3059  CURSTYLE MOD 2));Y:=CLEANBOX(Q+1,CURSTYLE);
  3060  Z:=CLEANBOX(Q+3,2*(CURSTYLE DIV 4)+5);V:=NEWNULLBOX;MEM[V].HH.B0:=1;
  3061  MEM[V+1].INT:=MEM[Y+1].INT;
  3062  IF MEM[X+1].INT>MEM[V+1].INT THEN MEM[V+1].INT:=MEM[X+1].INT;
  3063  IF MEM[Z+1].INT>MEM[V+1].INT THEN MEM[V+1].INT:=MEM[Z+1].INT;
  3064  X:=REBOX(X,MEM[V+1].INT);Y:=REBOX(Y,MEM[V+1].INT);
  3065  Z:=REBOX(Z,MEM[V+1].INT);MEM[X+4].INT:=HALF(DELTA);
  3066  MEM[Z+4].INT:=-MEM[X+4].INT;MEM[V+3].INT:=MEM[Y+3].INT;
  3067  MEM[V+2].INT:=MEM[Y+2].INT;
  3068  {751:}IF MEM[Q+2].HH.RH=0 THEN BEGIN FREENODE(X,7);MEM[V+5].HH.RH:=Y;
  3069  END ELSE BEGIN SHIFTUP:=FONTINFO[11+PARAMBASE[EQTB[3938+CURSIZE].HH.RH]]
  3070  .INT-MEM[X+2].INT;
  3071  IF SHIFTUP<FONTINFO[9+PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT THEN
  3072  SHIFTUP:=FONTINFO[9+PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT;
  3073  P:=NEWKERN(SHIFTUP);MEM[P].HH.RH:=Y;MEM[X].HH.RH:=P;
  3074  P:=NEWKERN(FONTINFO[13+PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT);
  3075  MEM[P].HH.RH:=X;MEM[V+5].HH.RH:=P;
  3076  MEM[V+3].INT:=MEM[V+3].INT+FONTINFO[13+PARAMBASE[EQTB[3938+CURSIZE].HH.
  3077  RH]].INT+MEM[X+3].INT+MEM[X+2].INT+SHIFTUP;END;
  3078  IF MEM[Q+3].HH.RH=0 THEN FREENODE(Z,7)ELSE BEGIN SHIFTDOWN:=FONTINFO[12+
  3079  PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT-MEM[Z+3].INT;
  3080  IF SHIFTDOWN<FONTINFO[10+PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT THEN
  3081  SHIFTDOWN:=FONTINFO[10+PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT;
  3082  P:=NEWKERN(SHIFTDOWN);MEM[Y].HH.RH:=P;MEM[P].HH.RH:=Z;
  3083  P:=NEWKERN(FONTINFO[13+PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT);
  3084  MEM[Z].HH.RH:=P;
  3085  MEM[V+2].INT:=MEM[V+2].INT+FONTINFO[13+PARAMBASE[EQTB[3938+CURSIZE].HH.
  3086  RH]].INT+MEM[Z+3].INT+MEM[Z+2].INT+SHIFTDOWN;END{:751};MEM[Q+1].INT:=V;
  3087  END{:750};MAKEOP:=DELTA;END;{:749}{752:}PROCEDURE MAKEORD(Q:HALFWORD);
  3088  LABEL 20,10;VAR A:INTEGER;P,R:HALFWORD;
  3089  BEGIN 20:IF MEM[Q+3].HH.RH=0 THEN IF MEM[Q+2].HH.RH=0 THEN IF MEM[Q+1].
  3090  HH.RH=1 THEN BEGIN P:=MEM[Q].HH.RH;
  3091  IF P<>0 THEN IF(MEM[P].HH.B0>=16)AND(MEM[P].HH.B0<=22)THEN IF MEM[P+1].
  3092  HH.RH=1 THEN IF MEM[P+1].HH.B0=MEM[Q+1].HH.B0 THEN BEGIN MEM[Q+1].HH.RH
  3093  :=4;FETCH(Q+1);
  3094  IF((CURI.B2-0)MOD 4)=1 THEN BEGIN A:=LIGKERNBASE[CURF]+CURI.B3;
  3095  CURC:=MEM[P+1].HH.B1;CURI:=FONTINFO[A].QQQQ;
  3096  IF CURI.B0>128 THEN BEGIN A:=LIGKERNBASE[CURF]+256*CURI.B2+CURI.B3
  3097  +32768-256*(128);CURI:=FONTINFO[A].QQQQ;END;
  3098  WHILE TRUE DO BEGIN{753:}IF CURI.B1=CURC THEN IF CURI.B0<=128 THEN IF
  3099  CURI.B2>=128 THEN BEGIN P:=NEWKERN(FONTINFO[KERNBASE[CURF]+256*CURI.B2+
  3100  CURI.B3].INT);MEM[P].HH.RH:=MEM[Q].HH.RH;MEM[Q].HH.RH:=P;GOTO 10;
  3101  END ELSE BEGIN BEGIN IF INTERRUPT<>0 THEN PAUSEFORINSTRUCTIONS;END;
  3102  CASE CURI.B2 OF 1,5:MEM[Q+1].HH.B1:=CURI.B3;2,6:MEM[P+1].HH.B1:=CURI.B3;
  3103  3,7,11:BEGIN R:=NEWNOAD;MEM[R+1].HH.B1:=CURI.B3;
  3104  MEM[R+1].HH.B0:=MEM[Q+1].HH.B0;MEM[Q].HH.RH:=R;MEM[R].HH.RH:=P;
  3105  IF CURI.B2<11 THEN MEM[R+1].HH.RH:=1 ELSE MEM[R+1].HH.RH:=4;END;
  3106  ELSE BEGIN MEM[Q].HH.RH:=MEM[P].HH.RH;MEM[Q+1].HH.B1:=CURI.B3;
  3107  MEM[Q+3]:=MEM[P+3];MEM[Q+2]:=MEM[P+2];FREENODE(P,4);END END;
  3108  IF CURI.B2>3 THEN GOTO 10;MEM[Q+1].HH.RH:=1;GOTO 20;END{:753};
  3109  IF CURI.B0>=128 THEN GOTO 10;A:=A+CURI.B0+1;CURI:=FONTINFO[A].QQQQ;END;
  3110  END;END;END;10:END;{:752}{756:}PROCEDURE MAKESCRIPTS(Q:HALFWORD;
  3111  DELTA:SCALED);VAR P,X,Y,Z:HALFWORD;SHIFTUP,SHIFTDOWN,CLR:SCALED;
  3112  T:SMALLNUMBER;BEGIN P:=MEM[Q+1].INT;
  3113  IF(P>=HIMEMMIN)THEN BEGIN SHIFTUP:=0;SHIFTDOWN:=0;
  3114  END ELSE BEGIN Z:=HPACK(P,0,1);IF CURSTYLE<4 THEN T:=16 ELSE T:=32;
  3115  SHIFTUP:=MEM[Z+3].INT-FONTINFO[18+PARAMBASE[EQTB[3937+T].HH.RH]].INT;
  3116  SHIFTDOWN:=MEM[Z+2].INT+FONTINFO[19+PARAMBASE[EQTB[3937+T].HH.RH]].INT;
  3117  FREENODE(Z,7);END;
  3118  IF MEM[Q+2].HH.RH=0 THEN{757:}BEGIN X:=CLEANBOX(Q+3,2*(CURSTYLE DIV 4)+5
  3119  );MEM[X+1].INT:=MEM[X+1].INT+EQTB[5842].INT;
  3120  IF SHIFTDOWN<FONTINFO[16+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT THEN
  3121  SHIFTDOWN:=FONTINFO[16+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT;
  3122  CLR:=MEM[X+3].INT-(ABS(FONTINFO[5+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].
  3123  INT*4)DIV 5);IF SHIFTDOWN<CLR THEN SHIFTDOWN:=CLR;
  3124  MEM[X+4].INT:=SHIFTDOWN;
  3125  END{:757}ELSE BEGIN{758:}BEGIN X:=CLEANBOX(Q+2,2*(CURSTYLE DIV 4)+4+(
  3126  CURSTYLE MOD 2));MEM[X+1].INT:=MEM[X+1].INT+EQTB[5842].INT;
  3127  IF ODD(CURSTYLE)THEN CLR:=FONTINFO[15+PARAMBASE[EQTB[3937+CURSIZE].HH.RH
  3128  ]].INT ELSE IF CURSTYLE<2 THEN CLR:=FONTINFO[13+PARAMBASE[EQTB[3937+
  3129  CURSIZE].HH.RH]].INT ELSE CLR:=FONTINFO[14+PARAMBASE[EQTB[3937+CURSIZE].
  3130  HH.RH]].INT;IF SHIFTUP<CLR THEN SHIFTUP:=CLR;
  3131  CLR:=MEM[X+2].INT+(ABS(FONTINFO[5+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].
  3132  INT)DIV 4);IF SHIFTUP<CLR THEN SHIFTUP:=CLR;END{:758};
  3133  IF MEM[Q+3].HH.RH=0 THEN MEM[X+4].INT:=-SHIFTUP ELSE{759:}BEGIN Y:=
  3134  CLEANBOX(Q+3,2*(CURSTYLE DIV 4)+5);
  3135  MEM[Y+1].INT:=MEM[Y+1].INT+EQTB[5842].INT;
  3136  IF SHIFTDOWN<FONTINFO[17+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT THEN
  3137  SHIFTDOWN:=FONTINFO[17+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT;
  3138  CLR:=4*FONTINFO[8+PARAMBASE[EQTB[3938+CURSIZE].HH.RH]].INT-((SHIFTUP-MEM
  3139  [X+2].INT)-(MEM[Y+3].INT-SHIFTDOWN));
  3140  IF CLR>0 THEN BEGIN SHIFTDOWN:=SHIFTDOWN+CLR;
  3141  CLR:=(ABS(FONTINFO[5+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT*4)DIV 5)-(
  3142  SHIFTUP-MEM[X+2].INT);IF CLR>0 THEN BEGIN SHIFTUP:=SHIFTUP+CLR;
  3143  SHIFTDOWN:=SHIFTDOWN-CLR;END;END;MEM[X+4].INT:=DELTA;
  3144  P:=NEWKERN((SHIFTUP-MEM[X+2].INT)-(MEM[Y+3].INT-SHIFTDOWN));
  3145  MEM[X].HH.RH:=P;MEM[P].HH.RH:=Y;X:=VPACKAGE(X,0,1,1073741823);
  3146  MEM[X+4].INT:=SHIFTDOWN;END{:759};END;
  3147  IF MEM[Q+1].INT=0 THEN MEM[Q+1].INT:=X ELSE BEGIN P:=MEM[Q+1].INT;
  3148  WHILE MEM[P].HH.RH<>0 DO P:=MEM[P].HH.RH;MEM[P].HH.RH:=X;END;END;
  3149  {:756}{762:}FUNCTION MAKELEFTRIGHT(Q:HALFWORD;STYLE:SMALLNUMBER;
  3150  MAXD,MAXH:SCALED):SMALLNUMBER;VAR DELTA,DELTA1,DELTA2:SCALED;
  3151  BEGIN IF STYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((STYLE-2)DIV 2);
  3152  DELTA2:=MAXD+FONTINFO[22+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT;
  3153  DELTA1:=MAXH+MAXD-DELTA2;IF DELTA2>DELTA1 THEN DELTA1:=DELTA2;
  3154  DELTA:=(DELTA1 DIV 500)*EQTB[5281].INT;
  3155  DELTA2:=DELTA1+DELTA1-EQTB[5840].INT;IF DELTA<DELTA2 THEN DELTA:=DELTA2;
  3156  MEM[Q+1].INT:=VARDELIMITER(Q+1,CURSIZE,DELTA);
  3157  MAKELEFTRIGHT:=MEM[Q].HH.B0-(10);END;{:762}PROCEDURE MLISTTOHLIST;
  3158  LABEL 21,82,80,81,83,30;VAR MLIST:HALFWORD;PENALTIES:BOOLEAN;
  3159  STYLE:SMALLNUMBER;SAVESTYLE:SMALLNUMBER;Q:HALFWORD;R:HALFWORD;
  3160  RTYPE:SMALLNUMBER;T:SMALLNUMBER;P,X,Y,Z:HALFWORD;PEN:INTEGER;
  3161  S:SMALLNUMBER;MAXH,MAXD:SCALED;DELTA:SCALED;BEGIN MLIST:=CURMLIST;
  3162  PENALTIES:=MLISTPENALTIES;STYLE:=CURSTYLE;Q:=MLIST;R:=0;RTYPE:=17;
  3163  MAXH:=0;MAXD:=0;
  3164  {703:}BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)
  3165  DIV 2);
  3166  CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT,18);
  3167  END{:703};WHILE Q<>0 DO{727:}BEGIN{728:}21:DELTA:=0;
  3168  CASE MEM[Q].HH.B0 OF 18:CASE RTYPE OF 18,17,19,20,22,30:BEGIN MEM[Q].HH.
  3169  B0:=16;GOTO 21;END;ELSE END;
  3170  19,21,22,31:BEGIN{729:}IF RTYPE=18 THEN MEM[R].HH.B0:=16{:729};
  3171  IF MEM[Q].HH.B0=31 THEN GOTO 80;END;{733:}30:GOTO 80;
  3172  25:BEGIN MAKEFRACTION(Q);GOTO 82;END;17:BEGIN DELTA:=MAKEOP(Q);
  3173  IF MEM[Q].HH.B1=1 THEN GOTO 82;END;16:MAKEORD(Q);20,23:;
  3174  24:MAKERADICAL(Q);27:MAKEOVER(Q);26:MAKEUNDER(Q);28:MAKEMATHACCENT(Q);
  3175  29:MAKEVCENTER(Q);{:733}{730:}14:BEGIN CURSTYLE:=MEM[Q].HH.B1;
  3176  {703:}BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)
  3177  DIV 2);
  3178  CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT,18);
  3179  END{:703};GOTO 81;END;
  3180  15:{731:}BEGIN CASE CURSTYLE DIV 2 OF 0:BEGIN P:=MEM[Q+1].HH.LH;
  3181  MEM[Q+1].HH.LH:=0;END;1:BEGIN P:=MEM[Q+1].HH.RH;MEM[Q+1].HH.RH:=0;END;
  3182  2:BEGIN P:=MEM[Q+2].HH.LH;MEM[Q+2].HH.LH:=0;END;
  3183  3:BEGIN P:=MEM[Q+2].HH.RH;MEM[Q+2].HH.RH:=0;END;END;
  3184  FLUSHNODELIST(MEM[Q+1].HH.LH);FLUSHNODELIST(MEM[Q+1].HH.RH);
  3185  FLUSHNODELIST(MEM[Q+2].HH.LH);FLUSHNODELIST(MEM[Q+2].HH.RH);
  3186  MEM[Q].HH.B0:=14;MEM[Q].HH.B1:=CURSTYLE;MEM[Q+1].INT:=0;MEM[Q+2].INT:=0;
  3187  IF P<>0 THEN BEGIN Z:=MEM[Q].HH.RH;MEM[Q].HH.RH:=P;
  3188  WHILE MEM[P].HH.RH<>0 DO P:=MEM[P].HH.RH;MEM[P].HH.RH:=Z;END;GOTO 81;
  3189  END{:731};3,4,5,8,12,7:GOTO 81;
  3190  2:BEGIN IF MEM[Q+3].INT>MAXH THEN MAXH:=MEM[Q+3].INT;
  3191  IF MEM[Q+2].INT>MAXD THEN MAXD:=MEM[Q+2].INT;GOTO 81;END;
  3192  10:BEGIN{732:}IF MEM[Q].HH.B1=99 THEN BEGIN X:=MEM[Q+1].HH.LH;
  3193  Y:=MATHGLUE(X,CURMU);DELETEGLUEREF(X);MEM[Q+1].HH.LH:=Y;MEM[Q].HH.B1:=0;
  3194  END ELSE IF(CURSIZE<>0)AND(MEM[Q].HH.B1=98)THEN BEGIN P:=MEM[Q].HH.RH;
  3195  IF P<>0 THEN IF(MEM[P].HH.B0=10)OR(MEM[P].HH.B0=11)THEN BEGIN MEM[Q].HH.
  3196  RH:=MEM[P].HH.RH;MEM[P].HH.RH:=0;FLUSHNODELIST(P);END;END{:732};GOTO 81;
  3197  END;11:BEGIN MATHKERN(Q,CURMU);GOTO 81;END;{:730}ELSE CONFUSION(889)END;
  3198  {754:}CASE MEM[Q+1].HH.RH OF 1,4:{755:}BEGIN FETCH(Q+1);
  3199  IF(CURI.B0>0)THEN BEGIN DELTA:=FONTINFO[ITALICBASE[CURF]+(CURI.B2-0)DIV
  3200  4].INT;P:=NEWCHARACTER(CURF,CURC-0);
  3201  IF(MEM[Q+1].HH.RH=4)AND(FONTINFO[2+PARAMBASE[CURF]].INT<>0)THEN DELTA:=0
  3202  ;
  3203  IF(MEM[Q+3].HH.RH=0)AND(DELTA<>0)THEN BEGIN MEM[P].HH.RH:=NEWKERN(DELTA)
  3204  ;DELTA:=0;END;END ELSE P:=0;END{:755};0:P:=0;2:P:=MEM[Q+1].HH.LH;
  3205  3:BEGIN CURMLIST:=MEM[Q+1].HH.LH;SAVESTYLE:=CURSTYLE;
  3206  MLISTPENALTIES:=FALSE;MLISTTOHLIST;CURSTYLE:=SAVESTYLE;
  3207  {703:}BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)
  3208  DIV 2);
  3209  CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT,18);
  3210  END{:703};P:=HPACK(MEM[29997].HH.RH,0,1);END;ELSE CONFUSION(890)END;
  3211  MEM[Q+1].INT:=P;IF(MEM[Q+3].HH.RH=0)AND(MEM[Q+2].HH.RH=0)THEN GOTO 82;
  3212  MAKESCRIPTS(Q,DELTA){:754}{:728};82:Z:=HPACK(MEM[Q+1].INT,0,1);
  3213  IF MEM[Z+3].INT>MAXH THEN MAXH:=MEM[Z+3].INT;
  3214  IF MEM[Z+2].INT>MAXD THEN MAXD:=MEM[Z+2].INT;FREENODE(Z,7);80:R:=Q;
  3215  RTYPE:=MEM[R].HH.B0;81:Q:=MEM[Q].HH.RH;END{:727};
  3216  {729:}IF RTYPE=18 THEN MEM[R].HH.B0:=16{:729};{760:}P:=29997;
  3217  MEM[P].HH.RH:=0;Q:=MLIST;RTYPE:=0;CURSTYLE:=STYLE;
  3218  {703:}BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)
  3219  DIV 2);
  3220  CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT,18);
  3221  END{:703};WHILE Q<>0 DO BEGIN{761:}T:=16;S:=4;PEN:=10000;
  3222  CASE MEM[Q].HH.B0 OF 17,20,21,22,23:T:=MEM[Q].HH.B0;18:BEGIN T:=18;
  3223  PEN:=EQTB[5272].INT;END;19:BEGIN T:=19;PEN:=EQTB[5273].INT;END;
  3224  16,29,27,26:;24:S:=5;28:S:=5;25:S:=6;
  3225  30,31:T:=MAKELEFTRIGHT(Q,STYLE,MAXD,MAXH);
  3226  14:{763:}BEGIN CURSTYLE:=MEM[Q].HH.B1;S:=3;
  3227  {703:}BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)
  3228  DIV 2);
  3229  CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3937+CURSIZE].HH.RH]].INT,18);
  3230  END{:703};GOTO 83;END{:763};8,12,2,7,5,3,4,10,11:BEGIN MEM[P].HH.RH:=Q;
  3231  P:=Q;Q:=MEM[Q].HH.RH;MEM[P].HH.RH:=0;GOTO 30;END;
  3232  ELSE CONFUSION(891)END{:761};
  3233  {766:}IF RTYPE>0 THEN BEGIN CASE STRPOOL[RTYPE*8+T+MAGICOFFSET]OF 48:X:=
  3234  0;49:IF CURSTYLE<4 THEN X:=15 ELSE X:=0;50:X:=15;
  3235  51:IF CURSTYLE<4 THEN X:=16 ELSE X:=0;
  3236  52:IF CURSTYLE<4 THEN X:=17 ELSE X:=0;ELSE CONFUSION(893)END;
  3237  IF X<>0 THEN BEGIN Y:=MATHGLUE(EQTB[2882+X].HH.RH,CURMU);Z:=NEWGLUE(Y);
  3238  MEM[Y].HH.RH:=0;MEM[P].HH.RH:=Z;P:=Z;MEM[Z].HH.B1:=X+1;END;END{:766};
  3239  {767:}IF MEM[Q+1].INT<>0 THEN BEGIN MEM[P].HH.RH:=MEM[Q+1].INT;
  3240  REPEAT P:=MEM[P].HH.RH;UNTIL MEM[P].HH.RH=0;END;
  3241  IF PENALTIES THEN IF MEM[Q].HH.RH<>0 THEN IF PEN<10000 THEN BEGIN RTYPE
  3242  :=MEM[MEM[Q].HH.RH].HH.B0;
  3243  IF RTYPE<>12 THEN IF RTYPE<>19 THEN BEGIN Z:=NEWPENALTY(PEN);
  3244  MEM[P].HH.RH:=Z;P:=Z;END;END{:767};RTYPE:=T;83:R:=Q;Q:=MEM[Q].HH.RH;
  3245  FREENODE(R,S);30:END{:760};END;{:726}{772:}PROCEDURE PUSHALIGNMENT;
  3246  VAR P:HALFWORD;BEGIN P:=GETNODE(5);MEM[P].HH.RH:=ALIGNPTR;
  3247  MEM[P].HH.LH:=CURALIGN;MEM[P+1].HH.LH:=MEM[29992].HH.RH;
  3248  MEM[P+1].HH.RH:=CURSPAN;MEM[P+2].INT:=CURLOOP;MEM[P+3].INT:=ALIGNSTATE;
  3249  MEM[P+4].HH.LH:=CURHEAD;MEM[P+4].HH.RH:=CURTAIL;ALIGNPTR:=P;
  3250  CURHEAD:=GETAVAIL;END;PROCEDURE POPALIGNMENT;VAR P:HALFWORD;
  3251  BEGIN BEGIN MEM[CURHEAD].HH.RH:=AVAIL;AVAIL:=CURHEAD;
  3252  {DYNUSED:=DYNUSED-1;}END;P:=ALIGNPTR;CURTAIL:=MEM[P+4].HH.RH;
  3253  CURHEAD:=MEM[P+4].HH.LH;ALIGNSTATE:=MEM[P+3].INT;CURLOOP:=MEM[P+2].INT;
  3254  CURSPAN:=MEM[P+1].HH.RH;MEM[29992].HH.RH:=MEM[P+1].HH.LH;
  3255  CURALIGN:=MEM[P].HH.LH;ALIGNPTR:=MEM[P].HH.RH;FREENODE(P,5);END;
  3256  {:772}{774:}{782:}PROCEDURE GETPREAMBLETOKEN;LABEL 20;BEGIN 20:GETTOKEN;
  3257  WHILE(CURCHR=256)AND(CURCMD=4)DO BEGIN GETTOKEN;
  3258  IF CURCMD>100 THEN BEGIN EXPAND;GETTOKEN;END;END;
  3259  IF CURCMD=9 THEN FATALERROR(595);
  3260  IF(CURCMD=75)AND(CURCHR=2893)THEN BEGIN SCANOPTIONALEQUALS;SCANGLUE(2);
  3261  IF EQTB[5306].INT>0 THEN GEQDEFINE(2893,117,CURVAL)ELSE EQDEFINE(2893,
  3262  117,CURVAL);GOTO 20;END;END;{:782}PROCEDURE ALIGNPEEK;FORWARD;
  3263  PROCEDURE NORMALPARAGRAPH;FORWARD;PROCEDURE INITALIGN;LABEL 30,31,32,22;
  3264  VAR SAVECSPTR:HALFWORD;P:HALFWORD;BEGIN SAVECSPTR:=CURCS;PUSHALIGNMENT;
  3265  ALIGNSTATE:=-1000000;
  3266  {776:}IF(CURLIST.MODEFIELD=203)AND((CURLIST.TAILFIELD<>CURLIST.HEADFIELD
  3267  )OR(CURLIST.AUXFIELD.INT<>0))THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  3268  PRINTNL(262);PRINT(680);END;PRINTESC(520);PRINT(894);BEGIN HELPPTR:=3;
  3269  HELPLINE[2]:=895;HELPLINE[1]:=896;HELPLINE[0]:=897;END;ERROR;FLUSHMATH;
  3270  END{:776};PUSHNEST;
  3271  {775:}IF CURLIST.MODEFIELD=203 THEN BEGIN CURLIST.MODEFIELD:=-1;
  3272  CURLIST.AUXFIELD.INT:=NEST[NESTPTR-2].AUXFIELD.INT;
  3273  END ELSE IF CURLIST.MODEFIELD>0 THEN CURLIST.MODEFIELD:=-CURLIST.
  3274  MODEFIELD{:775};SCANSPEC(6,FALSE);{777:}MEM[29992].HH.RH:=0;
  3275  CURALIGN:=29992;CURLOOP:=0;SCANNERSTATUS:=4;WARNINGINDEX:=SAVECSPTR;
  3276  ALIGNSTATE:=-1000000;
  3277  WHILE TRUE DO BEGIN{778:}MEM[CURALIGN].HH.RH:=NEWPARAMGLUE(11);
  3278  CURALIGN:=MEM[CURALIGN].HH.RH{:778};IF CURCMD=5 THEN GOTO 30;
  3279  {779:}{783:}P:=29996;MEM[P].HH.RH:=0;
  3280  WHILE TRUE DO BEGIN GETPREAMBLETOKEN;IF CURCMD=6 THEN GOTO 31;
  3281  IF(CURCMD<=5)AND(CURCMD>=4)AND(ALIGNSTATE=-1000000)THEN IF(P=29996)AND(
  3282  CURLOOP=0)AND(CURCMD=4)THEN CURLOOP:=CURALIGN ELSE BEGIN BEGIN IF
  3283  INTERACTION=3 THEN;PRINTNL(262);PRINT(903);END;BEGIN HELPPTR:=3;
  3284  HELPLINE[2]:=904;HELPLINE[1]:=905;HELPLINE[0]:=906;END;BACKERROR;
  3285  GOTO 31;
  3286  END ELSE IF(CURCMD<>10)OR(P<>29996)THEN BEGIN MEM[P].HH.RH:=GETAVAIL;
  3287  P:=MEM[P].HH.RH;MEM[P].HH.LH:=CURTOK;END;END;31:{:783};
  3288  MEM[CURALIGN].HH.RH:=NEWNULLBOX;CURALIGN:=MEM[CURALIGN].HH.RH;
  3289  MEM[CURALIGN].HH.LH:=29991;MEM[CURALIGN+1].INT:=-1073741824;
  3290  MEM[CURALIGN+3].INT:=MEM[29996].HH.RH;{784:}P:=29996;MEM[P].HH.RH:=0;
  3291  WHILE TRUE DO BEGIN 22:GETPREAMBLETOKEN;
  3292  IF(CURCMD<=5)AND(CURCMD>=4)AND(ALIGNSTATE=-1000000)THEN GOTO 32;
  3293  IF CURCMD=6 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  3294  PRINT(907);END;BEGIN HELPPTR:=3;HELPLINE[2]:=904;HELPLINE[1]:=905;
  3295  HELPLINE[0]:=908;END;ERROR;GOTO 22;END;MEM[P].HH.RH:=GETAVAIL;
  3296  P:=MEM[P].HH.RH;MEM[P].HH.LH:=CURTOK;END;32:MEM[P].HH.RH:=GETAVAIL;
  3297  P:=MEM[P].HH.RH;MEM[P].HH.LH:=6714{:784};
  3298  MEM[CURALIGN+2].INT:=MEM[29996].HH.RH{:779};END;
  3299  30:SCANNERSTATUS:=0{:777};NEWSAVELEVEL(6);
  3300  IF EQTB[3420].HH.RH<>0 THEN BEGINTOKENLIST(EQTB[3420].HH.RH,13);
  3301  ALIGNPEEK;END;{:774}{786:}{787:}PROCEDURE INITSPAN(P:HALFWORD);
  3302  BEGIN PUSHNEST;
  3303  IF CURLIST.MODEFIELD=-102 THEN CURLIST.AUXFIELD.HH.LH:=1000 ELSE BEGIN
  3304  CURLIST.AUXFIELD.INT:=-65536000;NORMALPARAGRAPH;END;CURSPAN:=P;END;
  3305  {:787}PROCEDURE INITROW;BEGIN PUSHNEST;
  3306  CURLIST.MODEFIELD:=(-103)-CURLIST.MODEFIELD;
  3307  IF CURLIST.MODEFIELD=-102 THEN CURLIST.AUXFIELD.HH.LH:=0 ELSE CURLIST.
  3308  AUXFIELD.INT:=0;
  3309  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(MEM[MEM[29992].HH.RH+1].HH.
  3310  LH);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  3311  MEM[CURLIST.TAILFIELD].HH.B1:=12;CURALIGN:=MEM[MEM[29992].HH.RH].HH.RH;
  3312  CURTAIL:=CURHEAD;INITSPAN(CURALIGN);END;{:786}{788:}PROCEDURE INITCOL;
  3313  BEGIN MEM[CURALIGN+5].HH.LH:=CURCMD;
  3314  IF CURCMD=63 THEN ALIGNSTATE:=0 ELSE BEGIN BACKINPUT;
  3315  BEGINTOKENLIST(MEM[CURALIGN+3].INT,1);END;END;
  3316  {:788}{791:}FUNCTION FINCOL:BOOLEAN;LABEL 10;VAR P:HALFWORD;
  3317  Q,R:HALFWORD;S:HALFWORD;U:HALFWORD;W:SCALED;O:GLUEORD;N:HALFWORD;
  3318  BEGIN IF CURALIGN=0 THEN CONFUSION(909);Q:=MEM[CURALIGN].HH.RH;
  3319  IF Q=0 THEN CONFUSION(909);IF ALIGNSTATE<500000 THEN FATALERROR(595);
  3320  P:=MEM[Q].HH.RH;
  3321  {792:}IF(P=0)AND(MEM[CURALIGN+5].HH.LH<257)THEN IF CURLOOP<>0 THEN{793:}
  3322  BEGIN MEM[Q].HH.RH:=NEWNULLBOX;P:=MEM[Q].HH.RH;MEM[P].HH.LH:=29991;
  3323  MEM[P+1].INT:=-1073741824;CURLOOP:=MEM[CURLOOP].HH.RH;{794:}Q:=29996;
  3324  R:=MEM[CURLOOP+3].INT;WHILE R<>0 DO BEGIN MEM[Q].HH.RH:=GETAVAIL;
  3325  Q:=MEM[Q].HH.RH;MEM[Q].HH.LH:=MEM[R].HH.LH;R:=MEM[R].HH.RH;END;
  3326  MEM[Q].HH.RH:=0;MEM[P+3].INT:=MEM[29996].HH.RH;Q:=29996;
  3327  R:=MEM[CURLOOP+2].INT;WHILE R<>0 DO BEGIN MEM[Q].HH.RH:=GETAVAIL;
  3328  Q:=MEM[Q].HH.RH;MEM[Q].HH.LH:=MEM[R].HH.LH;R:=MEM[R].HH.RH;END;
  3329  MEM[Q].HH.RH:=0;MEM[P+2].INT:=MEM[29996].HH.RH{:794};
  3330  CURLOOP:=MEM[CURLOOP].HH.RH;MEM[P].HH.RH:=NEWGLUE(MEM[CURLOOP+1].HH.LH);
  3331  MEM[MEM[P].HH.RH].HH.B1:=12;
  3332  END{:793}ELSE BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(910);
  3333  END;PRINTESC(899);BEGIN HELPPTR:=3;HELPLINE[2]:=911;HELPLINE[1]:=912;
  3334  HELPLINE[0]:=913;END;MEM[CURALIGN+5].HH.LH:=257;ERROR;END{:792};
  3335  IF MEM[CURALIGN+5].HH.LH<>256 THEN BEGIN UNSAVE;NEWSAVELEVEL(6);
  3336  {796:}BEGIN IF CURLIST.MODEFIELD=-102 THEN BEGIN ADJUSTTAIL:=CURTAIL;
  3337  U:=HPACK(MEM[CURLIST.HEADFIELD].HH.RH,0,1);W:=MEM[U+1].INT;
  3338  CURTAIL:=ADJUSTTAIL;ADJUSTTAIL:=0;
  3339  END ELSE BEGIN U:=VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,0,1,0);
  3340  W:=MEM[U+3].INT;END;N:=0;
  3341  IF CURSPAN<>CURALIGN THEN{798:}BEGIN Q:=CURSPAN;REPEAT N:=N+1;
  3342  Q:=MEM[MEM[Q].HH.RH].HH.RH;UNTIL Q=CURALIGN;
  3343  IF N>255 THEN CONFUSION(914);Q:=CURSPAN;
  3344  WHILE MEM[MEM[Q].HH.LH].HH.RH<N DO Q:=MEM[Q].HH.LH;
  3345  IF MEM[MEM[Q].HH.LH].HH.RH>N THEN BEGIN S:=GETNODE(2);
  3346  MEM[S].HH.LH:=MEM[Q].HH.LH;MEM[S].HH.RH:=N;MEM[Q].HH.LH:=S;
  3347  MEM[S+1].INT:=W;
  3348  END ELSE IF MEM[MEM[Q].HH.LH+1].INT<W THEN MEM[MEM[Q].HH.LH+1].INT:=W;
  3349  END{:798}ELSE IF W>MEM[CURALIGN+1].INT THEN MEM[CURALIGN+1].INT:=W;
  3350  MEM[U].HH.B0:=13;MEM[U].HH.B1:=N;
  3351  {659:}IF TOTALSTRETCH[3]<>0 THEN O:=3 ELSE IF TOTALSTRETCH[2]<>0 THEN O
  3352  :=2 ELSE IF TOTALSTRETCH[1]<>0 THEN O:=1 ELSE O:=0{:659};
  3353  MEM[U+5].HH.B1:=O;MEM[U+6].INT:=TOTALSTRETCH[O];
  3354  {665:}IF TOTALSHRINK[3]<>0 THEN O:=3 ELSE IF TOTALSHRINK[2]<>0 THEN O:=2
  3355  ELSE IF TOTALSHRINK[1]<>0 THEN O:=1 ELSE O:=0{:665};MEM[U+5].HH.B0:=O;
  3356  MEM[U+4].INT:=TOTALSHRINK[O];POPNEST;MEM[CURLIST.TAILFIELD].HH.RH:=U;
  3357  CURLIST.TAILFIELD:=U;END{:796};
  3358  {795:}BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(MEM[MEM[CURALIGN].HH.
  3359  RH+1].HH.LH);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  3360  MEM[CURLIST.TAILFIELD].HH.B1:=12{:795};
  3361  IF MEM[CURALIGN+5].HH.LH>=257 THEN BEGIN FINCOL:=TRUE;GOTO 10;END;
  3362  INITSPAN(P);END;ALIGNSTATE:=1000000;{406:}REPEAT GETXTOKEN;
  3363  UNTIL CURCMD<>10{:406};CURALIGN:=P;INITCOL;FINCOL:=FALSE;10:END;
  3364  {:791}{799:}PROCEDURE FINROW;VAR P:HALFWORD;
  3365  BEGIN IF CURLIST.MODEFIELD=-102 THEN BEGIN P:=HPACK(MEM[CURLIST.
  3366  HEADFIELD].HH.RH,0,1);POPNEST;APPENDTOVLIST(P);
  3367  IF CURHEAD<>CURTAIL THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=MEM[CURHEAD
  3368  ].HH.RH;CURLIST.TAILFIELD:=CURTAIL;END;
  3369  END ELSE BEGIN P:=VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,0,1,1073741823);
  3370  POPNEST;MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;
  3371  CURLIST.AUXFIELD.HH.LH:=1000;END;MEM[P].HH.B0:=13;MEM[P+6].INT:=0;
  3372  IF EQTB[3420].HH.RH<>0 THEN BEGINTOKENLIST(EQTB[3420].HH.RH,13);
  3373  ALIGNPEEK;END;{:799}{800:}PROCEDURE DOASSIGNMENTS;FORWARD;
  3374  PROCEDURE RESUMEAFTERDISPLAY;FORWARD;PROCEDURE BUILDPAGE;FORWARD;
  3375  PROCEDURE FINALIGN;VAR P,Q,R,S,U,V:HALFWORD;T,W:SCALED;O:SCALED;
  3376  N:HALFWORD;RULESAVE:SCALED;AUXSAVE:MEMORYWORD;
  3377  BEGIN IF CURGROUP<>6 THEN CONFUSION(915);UNSAVE;
  3378  IF CURGROUP<>6 THEN CONFUSION(916);UNSAVE;
  3379  IF NEST[NESTPTR-1].MODEFIELD=203 THEN O:=EQTB[5845].INT ELSE O:=0;
  3380  {801:}Q:=MEM[MEM[29992].HH.RH].HH.RH;REPEAT FLUSHLIST(MEM[Q+3].INT);
  3381  FLUSHLIST(MEM[Q+2].INT);P:=MEM[MEM[Q].HH.RH].HH.RH;
  3382  IF MEM[Q+1].INT=-1073741824 THEN{802:}BEGIN MEM[Q+1].INT:=0;
  3383  R:=MEM[Q].HH.RH;S:=MEM[R+1].HH.LH;
  3384  IF S<>0 THEN BEGIN MEM[0].HH.RH:=MEM[0].HH.RH+1;DELETEGLUEREF(S);
  3385  MEM[R+1].HH.LH:=0;END;END{:802};
  3386  IF MEM[Q].HH.LH<>29991 THEN{803:}BEGIN T:=MEM[Q+1].INT+MEM[MEM[MEM[Q].HH
  3387  .RH+1].HH.LH+1].INT;R:=MEM[Q].HH.LH;S:=29991;MEM[S].HH.LH:=P;N:=1;
  3388  REPEAT MEM[R+1].INT:=MEM[R+1].INT-T;U:=MEM[R].HH.LH;
  3389  WHILE MEM[R].HH.RH>N DO BEGIN S:=MEM[S].HH.LH;
  3390  N:=MEM[MEM[S].HH.LH].HH.RH+1;END;
  3391  IF MEM[R].HH.RH<N THEN BEGIN MEM[R].HH.LH:=MEM[S].HH.LH;MEM[S].HH.LH:=R;
  3392  MEM[R].HH.RH:=MEM[R].HH.RH-1;S:=R;
  3393  END ELSE BEGIN IF MEM[R+1].INT>MEM[MEM[S].HH.LH+1].INT THEN MEM[MEM[S].
  3394  HH.LH+1].INT:=MEM[R+1].INT;FREENODE(R,2);END;R:=U;UNTIL R=29991;
  3395  END{:803};MEM[Q].HH.B0:=13;MEM[Q].HH.B1:=0;MEM[Q+3].INT:=0;
  3396  MEM[Q+2].INT:=0;MEM[Q+5].HH.B1:=0;MEM[Q+5].HH.B0:=0;MEM[Q+6].INT:=0;
  3397  MEM[Q+4].INT:=0;Q:=P;UNTIL Q=0{:801};{804:}SAVEPTR:=SAVEPTR-2;
  3398  PACKBEGINLINE:=-CURLIST.MLFIELD;
  3399  IF CURLIST.MODEFIELD=-1 THEN BEGIN RULESAVE:=EQTB[5846].INT;
  3400  EQTB[5846].INT:=0;
  3401  P:=HPACK(MEM[29992].HH.RH,SAVESTACK[SAVEPTR+1].INT,SAVESTACK[SAVEPTR+0].
  3402  INT);EQTB[5846].INT:=RULESAVE;
  3403  END ELSE BEGIN Q:=MEM[MEM[29992].HH.RH].HH.RH;
  3404  REPEAT MEM[Q+3].INT:=MEM[Q+1].INT;MEM[Q+1].INT:=0;
  3405  Q:=MEM[MEM[Q].HH.RH].HH.RH;UNTIL Q=0;
  3406  P:=VPACKAGE(MEM[29992].HH.RH,SAVESTACK[SAVEPTR+1].INT,SAVESTACK[SAVEPTR
  3407  +0].INT,1073741823);Q:=MEM[MEM[29992].HH.RH].HH.RH;
  3408  REPEAT MEM[Q+1].INT:=MEM[Q+3].INT;MEM[Q+3].INT:=0;
  3409  Q:=MEM[MEM[Q].HH.RH].HH.RH;UNTIL Q=0;END;PACKBEGINLINE:=0{:804};
  3410  {805:}Q:=MEM[CURLIST.HEADFIELD].HH.RH;S:=CURLIST.HEADFIELD;
  3411  WHILE Q<>0 DO BEGIN IF NOT(Q>=HIMEMMIN)THEN IF MEM[Q].HH.B0=13 THEN
  3412  {807:}BEGIN IF CURLIST.MODEFIELD=-1 THEN BEGIN MEM[Q].HH.B0:=0;
  3413  MEM[Q+1].INT:=MEM[P+1].INT;END ELSE BEGIN MEM[Q].HH.B0:=1;
  3414  MEM[Q+3].INT:=MEM[P+3].INT;END;MEM[Q+5].HH.B1:=MEM[P+5].HH.B1;
  3415  MEM[Q+5].HH.B0:=MEM[P+5].HH.B0;MEM[Q+6].GR:=MEM[P+6].GR;MEM[Q+4].INT:=O;
  3416  R:=MEM[MEM[Q+5].HH.RH].HH.RH;S:=MEM[MEM[P+5].HH.RH].HH.RH;
  3417  REPEAT{808:}N:=MEM[R].HH.B1;T:=MEM[S+1].INT;W:=T;U:=29996;
  3418  WHILE N>0 DO BEGIN N:=N-1;{809:}S:=MEM[S].HH.RH;V:=MEM[S+1].HH.LH;
  3419  MEM[U].HH.RH:=NEWGLUE(V);U:=MEM[U].HH.RH;MEM[U].HH.B1:=12;
  3420  T:=T+MEM[V+1].INT;
  3421  IF MEM[P+5].HH.B0=1 THEN BEGIN IF MEM[V].HH.B0=MEM[P+5].HH.B1 THEN T:=T+
  3422  ROUND(MEM[P+6].GR*MEM[V+2].INT);
  3423  END ELSE IF MEM[P+5].HH.B0=2 THEN BEGIN IF MEM[V].HH.B1=MEM[P+5].HH.B1
  3424  THEN T:=T-ROUND(MEM[P+6].GR*MEM[V+3].INT);END;S:=MEM[S].HH.RH;
  3425  MEM[U].HH.RH:=NEWNULLBOX;U:=MEM[U].HH.RH;T:=T+MEM[S+1].INT;
  3426  IF CURLIST.MODEFIELD=-1 THEN MEM[U+1].INT:=MEM[S+1].INT ELSE BEGIN MEM[U
  3427  ].HH.B0:=1;MEM[U+3].INT:=MEM[S+1].INT;END{:809};END;
  3428  IF CURLIST.MODEFIELD=-1 THEN{810:}BEGIN MEM[R+3].INT:=MEM[Q+3].INT;
  3429  MEM[R+2].INT:=MEM[Q+2].INT;
  3430  IF T=MEM[R+1].INT THEN BEGIN MEM[R+5].HH.B0:=0;MEM[R+5].HH.B1:=0;
  3431  MEM[R+6].GR:=0.0;
  3432  END ELSE IF T>MEM[R+1].INT THEN BEGIN MEM[R+5].HH.B0:=1;
  3433  IF MEM[R+6].INT=0 THEN MEM[R+6].GR:=0.0 ELSE MEM[R+6].GR:=(T-MEM[R+1].
  3434  INT)/MEM[R+6].INT;END ELSE BEGIN MEM[R+5].HH.B1:=MEM[R+5].HH.B0;
  3435  MEM[R+5].HH.B0:=2;
  3436  IF MEM[R+4].INT=0 THEN MEM[R+6].GR:=0.0 ELSE IF(MEM[R+5].HH.B1=0)AND(MEM
  3437  [R+1].INT-T>MEM[R+4].INT)THEN MEM[R+6].GR:=1.0 ELSE MEM[R+6].GR:=(MEM[R
  3438  +1].INT-T)/MEM[R+4].INT;END;MEM[R+1].INT:=W;MEM[R].HH.B0:=0;
  3439  END{:810}ELSE{811:}BEGIN MEM[R+1].INT:=MEM[Q+1].INT;
  3440  IF T=MEM[R+3].INT THEN BEGIN MEM[R+5].HH.B0:=0;MEM[R+5].HH.B1:=0;
  3441  MEM[R+6].GR:=0.0;
  3442  END ELSE IF T>MEM[R+3].INT THEN BEGIN MEM[R+5].HH.B0:=1;
  3443  IF MEM[R+6].INT=0 THEN MEM[R+6].GR:=0.0 ELSE MEM[R+6].GR:=(T-MEM[R+3].
  3444  INT)/MEM[R+6].INT;END ELSE BEGIN MEM[R+5].HH.B1:=MEM[R+5].HH.B0;
  3445  MEM[R+5].HH.B0:=2;
  3446  IF MEM[R+4].INT=0 THEN MEM[R+6].GR:=0.0 ELSE IF(MEM[R+5].HH.B1=0)AND(MEM
  3447  [R+3].INT-T>MEM[R+4].INT)THEN MEM[R+6].GR:=1.0 ELSE MEM[R+6].GR:=(MEM[R
  3448  +3].INT-T)/MEM[R+4].INT;END;MEM[R+3].INT:=W;MEM[R].HH.B0:=1;END{:811};
  3449  MEM[R+4].INT:=0;IF U<>29996 THEN BEGIN MEM[U].HH.RH:=MEM[R].HH.RH;
  3450  MEM[R].HH.RH:=MEM[29996].HH.RH;R:=U;END{:808};
  3451  R:=MEM[MEM[R].HH.RH].HH.RH;S:=MEM[MEM[S].HH.RH].HH.RH;UNTIL R=0;
  3452  END{:807}ELSE IF MEM[Q].HH.B0=2 THEN{806:}BEGIN IF(MEM[Q+1].INT=
  3453  -1073741824)THEN MEM[Q+1].INT:=MEM[P+1].INT;
  3454  IF(MEM[Q+3].INT=-1073741824)THEN MEM[Q+3].INT:=MEM[P+3].INT;
  3455  IF(MEM[Q+2].INT=-1073741824)THEN MEM[Q+2].INT:=MEM[P+2].INT;
  3456  IF O<>0 THEN BEGIN R:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;Q:=HPACK(Q,0,1);
  3457  MEM[Q+4].INT:=O;MEM[Q].HH.RH:=R;MEM[S].HH.RH:=Q;END;END{:806};S:=Q;
  3458  Q:=MEM[Q].HH.RH;END{:805};FLUSHNODELIST(P);POPALIGNMENT;
  3459  {812:}AUXSAVE:=CURLIST.AUXFIELD;P:=MEM[CURLIST.HEADFIELD].HH.RH;
  3460  Q:=CURLIST.TAILFIELD;POPNEST;
  3461  IF CURLIST.MODEFIELD=203 THEN{1206:}BEGIN DOASSIGNMENTS;
  3462  IF CURCMD<>3 THEN{1207:}BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  3463  PRINT(1170);END;BEGIN HELPPTR:=2;HELPLINE[1]:=895;HELPLINE[0]:=896;END;
  3464  BACKERROR;END{:1207}ELSE{1197:}BEGIN GETXTOKEN;
  3465  IF CURCMD<>3 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  3466  PRINT(1166);END;BEGIN HELPPTR:=2;HELPLINE[1]:=1167;HELPLINE[0]:=1168;
  3467  END;BACKERROR;END;END{:1197};POPNEST;
  3468  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[5274].INT);
  3469  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  3470  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(3);
  3471  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  3472  MEM[CURLIST.TAILFIELD].HH.RH:=P;IF P<>0 THEN CURLIST.TAILFIELD:=Q;
  3473  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[5275].INT);
  3474  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  3475  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(4);
  3476  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  3477  CURLIST.AUXFIELD.INT:=AUXSAVE.INT;RESUMEAFTERDISPLAY;
  3478  END{:1206}ELSE BEGIN CURLIST.AUXFIELD:=AUXSAVE;
  3479  MEM[CURLIST.TAILFIELD].HH.RH:=P;IF P<>0 THEN CURLIST.TAILFIELD:=Q;
  3480  IF CURLIST.MODEFIELD=1 THEN BUILDPAGE;END{:812};END;
  3481  {785:}PROCEDURE ALIGNPEEK;LABEL 20;BEGIN 20:ALIGNSTATE:=1000000;
  3482  {406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
  3483  IF CURCMD=34 THEN BEGIN SCANLEFTBRACE;NEWSAVELEVEL(7);
  3484  IF CURLIST.MODEFIELD=-1 THEN NORMALPARAGRAPH;
  3485  END ELSE IF CURCMD=2 THEN FINALIGN ELSE IF(CURCMD=5)AND(CURCHR=258)THEN
  3486  GOTO 20 ELSE BEGIN INITROW;INITCOL;END;END;
  3487  {:785}{:800}{815:}{826:}FUNCTION FINITESHRINK(P:HALFWORD):HALFWORD;
  3488  VAR Q:HALFWORD;
  3489  BEGIN IF NOSHRINKERRORYET THEN BEGIN NOSHRINKERRORYET:=FALSE;
  3490  {IF EQTB[5295].INT>0 THEN ENDDIAGNOSTIC(TRUE);}
  3491  BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(917);END;
  3492  BEGIN HELPPTR:=5;HELPLINE[4]:=918;HELPLINE[3]:=919;HELPLINE[2]:=920;
  3493  HELPLINE[1]:=921;HELPLINE[0]:=922;END;ERROR;
  3494  {IF EQTB[5295].INT>0 THEN BEGINDIAGNOSTIC;}END;Q:=NEWSPEC(P);
  3495  MEM[Q].HH.B1:=0;DELETEGLUEREF(P);FINITESHRINK:=Q;END;
  3496  {:826}{829:}PROCEDURE TRYBREAK(PI:INTEGER;BREAKTYPE:SMALLNUMBER);
  3497  LABEL 10,30,31,22,60;VAR R:HALFWORD;PREVR:HALFWORD;OLDL:HALFWORD;
  3498  NOBREAKYET:BOOLEAN;{830:}PREVPREVR:HALFWORD;S:HALFWORD;Q:HALFWORD;
  3499  V:HALFWORD;T:INTEGER;F:INTERNALFONTNUMBER;L:HALFWORD;
  3500  NODERSTAYSACTIVE:BOOLEAN;LINEWIDTH:SCALED;FITCLASS:0..3;B:HALFWORD;
  3501  D:INTEGER;ARTIFICIALDEMERITS:BOOLEAN;SHORTFALL:SCALED;
  3502  {:830}BEGIN{831:}IF ABS(PI)>=10000 THEN IF PI>0 THEN GOTO 10 ELSE PI:=
  3503  -10000{:831};NOBREAKYET:=TRUE;PREVR:=29993;OLDL:=0;
  3504  CURACTIVEWIDTH[1]:=ACTIVEWIDTH[1];CURACTIVEWIDTH[2]:=ACTIVEWIDTH[2];
  3505  CURACTIVEWIDTH[3]:=ACTIVEWIDTH[3];CURACTIVEWIDTH[4]:=ACTIVEWIDTH[4];
  3506  CURACTIVEWIDTH[5]:=ACTIVEWIDTH[5];CURACTIVEWIDTH[6]:=ACTIVEWIDTH[6];
  3507  WHILE TRUE DO BEGIN 22:R:=MEM[PREVR].HH.RH;
  3508  {832:}IF MEM[R].HH.B0=2 THEN BEGIN CURACTIVEWIDTH[1]:=CURACTIVEWIDTH[1]+
  3509  MEM[R+1].INT;CURACTIVEWIDTH[2]:=CURACTIVEWIDTH[2]+MEM[R+2].INT;
  3510  CURACTIVEWIDTH[3]:=CURACTIVEWIDTH[3]+MEM[R+3].INT;
  3511  CURACTIVEWIDTH[4]:=CURACTIVEWIDTH[4]+MEM[R+4].INT;
  3512  CURACTIVEWIDTH[5]:=CURACTIVEWIDTH[5]+MEM[R+5].INT;
  3513  CURACTIVEWIDTH[6]:=CURACTIVEWIDTH[6]+MEM[R+6].INT;PREVPREVR:=PREVR;
  3514  PREVR:=R;GOTO 22;END{:832};{835:}BEGIN L:=MEM[R+1].HH.LH;
  3515  IF L>OLDL THEN BEGIN IF(MINIMUMDEMERITS<1073741823)AND((OLDL<>EASYLINE)
  3516  OR(R=29993))THEN{836:}BEGIN IF NOBREAKYET THEN{837:}BEGIN NOBREAKYET:=
  3517  FALSE;BREAKWIDTH[1]:=BACKGROUND[1];BREAKWIDTH[2]:=BACKGROUND[2];
  3518  BREAKWIDTH[3]:=BACKGROUND[3];BREAKWIDTH[4]:=BACKGROUND[4];
  3519  BREAKWIDTH[5]:=BACKGROUND[5];BREAKWIDTH[6]:=BACKGROUND[6];S:=CURP;
  3520  IF BREAKTYPE>0 THEN IF CURP<>0 THEN{840:}BEGIN T:=MEM[CURP].HH.B1;
  3521  V:=CURP;S:=MEM[CURP+1].HH.RH;WHILE T>0 DO BEGIN T:=T-1;V:=MEM[V].HH.RH;
  3522  {841:}IF(V>=HIMEMMIN)THEN BEGIN F:=MEM[V].HH.B0;
  3523  BREAKWIDTH[1]:=BREAKWIDTH[1]-FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+
  3524  MEM[V].HH.B1].QQQQ.B0].INT;
  3525  END ELSE CASE MEM[V].HH.B0 OF 6:BEGIN F:=MEM[V+1].HH.B0;
  3526  BREAKWIDTH[1]:=BREAKWIDTH[1]-FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+
  3527  MEM[V+1].HH.B1].QQQQ.B0].INT;END;
  3528  0,1,2,11:BREAKWIDTH[1]:=BREAKWIDTH[1]-MEM[V+1].INT;
  3529  ELSE CONFUSION(923)END{:841};END;
  3530  WHILE S<>0 DO BEGIN{842:}IF(S>=HIMEMMIN)THEN BEGIN F:=MEM[S].HH.B0;
  3531  BREAKWIDTH[1]:=BREAKWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+
  3532  MEM[S].HH.B1].QQQQ.B0].INT;
  3533  END ELSE CASE MEM[S].HH.B0 OF 6:BEGIN F:=MEM[S+1].HH.B0;
  3534  BREAKWIDTH[1]:=BREAKWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+
  3535  MEM[S+1].HH.B1].QQQQ.B0].INT;END;
  3536  0,1,2,11:BREAKWIDTH[1]:=BREAKWIDTH[1]+MEM[S+1].INT;
  3537  ELSE CONFUSION(924)END{:842};S:=MEM[S].HH.RH;END;
  3538  BREAKWIDTH[1]:=BREAKWIDTH[1]+DISCWIDTH;
  3539  IF MEM[CURP+1].HH.RH=0 THEN S:=MEM[V].HH.RH;END{:840};
  3540  WHILE S<>0 DO BEGIN IF(S>=HIMEMMIN)THEN GOTO 30;
  3541  CASE MEM[S].HH.B0 OF 10:{838:}BEGIN V:=MEM[S+1].HH.LH;
  3542  BREAKWIDTH[1]:=BREAKWIDTH[1]-MEM[V+1].INT;
  3543  BREAKWIDTH[2+MEM[V].HH.B0]:=BREAKWIDTH[2+MEM[V].HH.B0]-MEM[V+2].INT;
  3544  BREAKWIDTH[6]:=BREAKWIDTH[6]-MEM[V+3].INT;END{:838};12:;
  3545  9:BREAKWIDTH[1]:=BREAKWIDTH[1]-MEM[S+1].INT;
  3546  11:IF MEM[S].HH.B1<>1 THEN GOTO 30 ELSE BREAKWIDTH[1]:=BREAKWIDTH[1]-MEM
  3547  [S+1].INT;ELSE GOTO 30 END;S:=MEM[S].HH.RH;END;30:END{:837};
  3548  {843:}IF MEM[PREVR].HH.B0=2 THEN BEGIN MEM[PREVR+1].INT:=MEM[PREVR+1].
  3549  INT-CURACTIVEWIDTH[1]+BREAKWIDTH[1];
  3550  MEM[PREVR+2].INT:=MEM[PREVR+2].INT-CURACTIVEWIDTH[2]+BREAKWIDTH[2];
  3551  MEM[PREVR+3].INT:=MEM[PREVR+3].INT-CURACTIVEWIDTH[3]+BREAKWIDTH[3];
  3552  MEM[PREVR+4].INT:=MEM[PREVR+4].INT-CURACTIVEWIDTH[4]+BREAKWIDTH[4];
  3553  MEM[PREVR+5].INT:=MEM[PREVR+5].INT-CURACTIVEWIDTH[5]+BREAKWIDTH[5];
  3554  MEM[PREVR+6].INT:=MEM[PREVR+6].INT-CURACTIVEWIDTH[6]+BREAKWIDTH[6];
  3555  END ELSE IF PREVR=29993 THEN BEGIN ACTIVEWIDTH[1]:=BREAKWIDTH[1];
  3556  ACTIVEWIDTH[2]:=BREAKWIDTH[2];ACTIVEWIDTH[3]:=BREAKWIDTH[3];
  3557  ACTIVEWIDTH[4]:=BREAKWIDTH[4];ACTIVEWIDTH[5]:=BREAKWIDTH[5];
  3558  ACTIVEWIDTH[6]:=BREAKWIDTH[6];END ELSE BEGIN Q:=GETNODE(7);
  3559  MEM[Q].HH.RH:=R;MEM[Q].HH.B0:=2;MEM[Q].HH.B1:=0;
  3560  MEM[Q+1].INT:=BREAKWIDTH[1]-CURACTIVEWIDTH[1];
  3561  MEM[Q+2].INT:=BREAKWIDTH[2]-CURACTIVEWIDTH[2];
  3562  MEM[Q+3].INT:=BREAKWIDTH[3]-CURACTIVEWIDTH[3];
  3563  MEM[Q+4].INT:=BREAKWIDTH[4]-CURACTIVEWIDTH[4];
  3564  MEM[Q+5].INT:=BREAKWIDTH[5]-CURACTIVEWIDTH[5];
  3565  MEM[Q+6].INT:=BREAKWIDTH[6]-CURACTIVEWIDTH[6];MEM[PREVR].HH.RH:=Q;
  3566  PREVPREVR:=PREVR;PREVR:=Q;END{:843};
  3567  IF ABS(EQTB[5279].INT)>=1073741823-MINIMUMDEMERITS THEN MINIMUMDEMERITS
  3568  :=1073741822 ELSE MINIMUMDEMERITS:=MINIMUMDEMERITS+ABS(EQTB[5279].INT);
  3569  FOR FITCLASS:=0 TO 3 DO BEGIN IF MINIMALDEMERITS[FITCLASS]<=
  3570  MINIMUMDEMERITS THEN{845:}BEGIN Q:=GETNODE(2);MEM[Q].HH.RH:=PASSIVE;
  3571  PASSIVE:=Q;MEM[Q+1].HH.RH:=CURP;{PASSNUMBER:=PASSNUMBER+1;
  3572  MEM[Q].HH.LH:=PASSNUMBER;}MEM[Q+1].HH.LH:=BESTPLACE[FITCLASS];
  3573  Q:=GETNODE(3);MEM[Q+1].HH.RH:=PASSIVE;
  3574  MEM[Q+1].HH.LH:=BESTPLLINE[FITCLASS]+1;MEM[Q].HH.B1:=FITCLASS;
  3575  MEM[Q].HH.B0:=BREAKTYPE;MEM[Q+2].INT:=MINIMALDEMERITS[FITCLASS];
  3576  MEM[Q].HH.RH:=R;MEM[PREVR].HH.RH:=Q;PREVR:=Q;
  3577  {IF EQTB[5295].INT>0 THEN[846:]BEGIN PRINTNL(925);
  3578  PRINTINT(MEM[PASSIVE].HH.LH);PRINT(926);PRINTINT(MEM[Q+1].HH.LH-1);
  3579  PRINTCHAR(46);PRINTINT(FITCLASS);IF BREAKTYPE=1 THEN PRINTCHAR(45);
  3580  PRINT(927);PRINTINT(MEM[Q+2].INT);PRINT(928);
  3581  IF MEM[PASSIVE+1].HH.LH=0 THEN PRINTCHAR(48)ELSE PRINTINT(MEM[MEM[
  3582  PASSIVE+1].HH.LH].HH.LH);END[:846];}END{:845};
  3583  MINIMALDEMERITS[FITCLASS]:=1073741823;END;MINIMUMDEMERITS:=1073741823;
  3584  {844:}IF R<>29993 THEN BEGIN Q:=GETNODE(7);MEM[Q].HH.RH:=R;
  3585  MEM[Q].HH.B0:=2;MEM[Q].HH.B1:=0;
  3586  MEM[Q+1].INT:=CURACTIVEWIDTH[1]-BREAKWIDTH[1];
  3587  MEM[Q+2].INT:=CURACTIVEWIDTH[2]-BREAKWIDTH[2];
  3588  MEM[Q+3].INT:=CURACTIVEWIDTH[3]-BREAKWIDTH[3];
  3589  MEM[Q+4].INT:=CURACTIVEWIDTH[4]-BREAKWIDTH[4];
  3590  MEM[Q+5].INT:=CURACTIVEWIDTH[5]-BREAKWIDTH[5];
  3591  MEM[Q+6].INT:=CURACTIVEWIDTH[6]-BREAKWIDTH[6];MEM[PREVR].HH.RH:=Q;
  3592  PREVPREVR:=PREVR;PREVR:=Q;END{:844};END{:836};IF R=29993 THEN GOTO 10;
  3593  {850:}IF L>EASYLINE THEN BEGIN LINEWIDTH:=SECONDWIDTH;OLDL:=65534;
  3594  END ELSE BEGIN OLDL:=L;
  3595  IF L>LASTSPECIALLINE THEN LINEWIDTH:=SECONDWIDTH ELSE IF EQTB[3412].HH.
  3596  RH=0 THEN LINEWIDTH:=FIRSTWIDTH ELSE LINEWIDTH:=MEM[EQTB[3412].HH.RH+2*L
  3597  ].INT;END{:850};END;END{:835};{851:}BEGIN ARTIFICIALDEMERITS:=FALSE;
  3598  SHORTFALL:=LINEWIDTH-CURACTIVEWIDTH[1];
  3599  IF SHORTFALL>0 THEN{852:}IF(CURACTIVEWIDTH[3]<>0)OR(CURACTIVEWIDTH[4]<>0
  3600  )OR(CURACTIVEWIDTH[5]<>0)THEN BEGIN B:=0;FITCLASS:=2;
  3601  END ELSE BEGIN IF SHORTFALL>7230584 THEN IF CURACTIVEWIDTH[2]<1663497
  3602  THEN BEGIN B:=10000;FITCLASS:=0;GOTO 31;END;
  3603  B:=BADNESS(SHORTFALL,CURACTIVEWIDTH[2]);
  3604  IF B>12 THEN IF B>99 THEN FITCLASS:=0 ELSE FITCLASS:=1 ELSE FITCLASS:=2;
  3605  31:END{:852}ELSE{853:}BEGIN IF-SHORTFALL>CURACTIVEWIDTH[6]THEN B:=10001
  3606  ELSE B:=BADNESS(-SHORTFALL,CURACTIVEWIDTH[6]);
  3607  IF B>12 THEN FITCLASS:=3 ELSE FITCLASS:=2;END{:853};
  3608  IF(B>10000)OR(PI=-10000)THEN{854:}BEGIN IF FINALPASS AND(MINIMUMDEMERITS
  3609  =1073741823)AND(MEM[R].HH.RH=29993)AND(PREVR=29993)THEN
  3610  ARTIFICIALDEMERITS:=TRUE ELSE IF B>THRESHOLD THEN GOTO 60;
  3611  NODERSTAYSACTIVE:=FALSE;END{:854}ELSE BEGIN PREVR:=R;
  3612  IF B>THRESHOLD THEN GOTO 22;NODERSTAYSACTIVE:=TRUE;END;
  3613  {855:}IF ARTIFICIALDEMERITS THEN D:=0 ELSE{859:}BEGIN D:=EQTB[5265].INT+
  3614  B;IF ABS(D)>=10000 THEN D:=100000000 ELSE D:=D*D;
  3615  IF PI<>0 THEN IF PI>0 THEN D:=D+PI*PI ELSE IF PI>-10000 THEN D:=D-PI*PI;
  3616  IF(BREAKTYPE=1)AND(MEM[R].HH.B0=1)THEN IF CURP<>0 THEN D:=D+EQTB[5277].
  3617  INT ELSE D:=D+EQTB[5278].INT;
  3618  IF ABS(FITCLASS-MEM[R].HH.B1)>1 THEN D:=D+EQTB[5279].INT;END{:859};
  3619  {IF EQTB[5295].INT>0 THEN[856:]BEGIN IF PRINTEDNODE<>CURP THEN[857:]
  3620  BEGIN PRINTNL(338);
  3621  IF CURP=0 THEN SHORTDISPLAY(MEM[PRINTEDNODE].HH.RH)ELSE BEGIN SAVELINK:=
  3622  MEM[CURP].HH.RH;MEM[CURP].HH.RH:=0;PRINTNL(338);
  3623  SHORTDISPLAY(MEM[PRINTEDNODE].HH.RH);MEM[CURP].HH.RH:=SAVELINK;END;
  3624  PRINTEDNODE:=CURP;END[:857];PRINTNL(64);
  3625  IF CURP=0 THEN PRINTESC(597)ELSE IF MEM[CURP].HH.B0<>10 THEN BEGIN IF
  3626  MEM[CURP].HH.B0=12 THEN PRINTESC(531)ELSE IF MEM[CURP].HH.B0=7 THEN
  3627  PRINTESC(349)ELSE IF MEM[CURP].HH.B0=11 THEN PRINTESC(340)ELSE PRINTESC(
  3628  343);END;PRINT(929);
  3629  IF MEM[R+1].HH.RH=0 THEN PRINTCHAR(48)ELSE PRINTINT(MEM[MEM[R+1].HH.RH].
  3630  HH.LH);PRINT(930);IF B>10000 THEN PRINTCHAR(42)ELSE PRINTINT(B);
  3631  PRINT(931);PRINTINT(PI);PRINT(932);
  3632  IF ARTIFICIALDEMERITS THEN PRINTCHAR(42)ELSE PRINTINT(D);END[:856];}
  3633  D:=D+MEM[R+2].INT;
  3634  IF D<=MINIMALDEMERITS[FITCLASS]THEN BEGIN MINIMALDEMERITS[FITCLASS]:=D;
  3635  BESTPLACE[FITCLASS]:=MEM[R+1].HH.RH;BESTPLLINE[FITCLASS]:=L;
  3636  IF D<MINIMUMDEMERITS THEN MINIMUMDEMERITS:=D;END{:855};
  3637  IF NODERSTAYSACTIVE THEN GOTO 22;
  3638  60:{860:}MEM[PREVR].HH.RH:=MEM[R].HH.RH;FREENODE(R,3);
  3639  IF PREVR=29993 THEN{861:}BEGIN R:=MEM[29993].HH.RH;
  3640  IF MEM[R].HH.B0=2 THEN BEGIN ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[R+1].INT
  3641  ;ACTIVEWIDTH[2]:=ACTIVEWIDTH[2]+MEM[R+2].INT;
  3642  ACTIVEWIDTH[3]:=ACTIVEWIDTH[3]+MEM[R+3].INT;
  3643  ACTIVEWIDTH[4]:=ACTIVEWIDTH[4]+MEM[R+4].INT;
  3644  ACTIVEWIDTH[5]:=ACTIVEWIDTH[5]+MEM[R+5].INT;
  3645  ACTIVEWIDTH[6]:=ACTIVEWIDTH[6]+MEM[R+6].INT;
  3646  CURACTIVEWIDTH[1]:=ACTIVEWIDTH[1];CURACTIVEWIDTH[2]:=ACTIVEWIDTH[2];
  3647  CURACTIVEWIDTH[3]:=ACTIVEWIDTH[3];CURACTIVEWIDTH[4]:=ACTIVEWIDTH[4];
  3648  CURACTIVEWIDTH[5]:=ACTIVEWIDTH[5];CURACTIVEWIDTH[6]:=ACTIVEWIDTH[6];
  3649  MEM[29993].HH.RH:=MEM[R].HH.RH;FREENODE(R,7);END;
  3650  END{:861}ELSE IF MEM[PREVR].HH.B0=2 THEN BEGIN R:=MEM[PREVR].HH.RH;
  3651  IF R=29993 THEN BEGIN CURACTIVEWIDTH[1]:=CURACTIVEWIDTH[1]-MEM[PREVR+1].
  3652  INT;CURACTIVEWIDTH[2]:=CURACTIVEWIDTH[2]-MEM[PREVR+2].INT;
  3653  CURACTIVEWIDTH[3]:=CURACTIVEWIDTH[3]-MEM[PREVR+3].INT;
  3654  CURACTIVEWIDTH[4]:=CURACTIVEWIDTH[4]-MEM[PREVR+4].INT;
  3655  CURACTIVEWIDTH[5]:=CURACTIVEWIDTH[5]-MEM[PREVR+5].INT;
  3656  CURACTIVEWIDTH[6]:=CURACTIVEWIDTH[6]-MEM[PREVR+6].INT;
  3657  MEM[PREVPREVR].HH.RH:=29993;FREENODE(PREVR,7);PREVR:=PREVPREVR;
  3658  END ELSE IF MEM[R].HH.B0=2 THEN BEGIN CURACTIVEWIDTH[1]:=CURACTIVEWIDTH[
  3659  1]+MEM[R+1].INT;CURACTIVEWIDTH[2]:=CURACTIVEWIDTH[2]+MEM[R+2].INT;
  3660  CURACTIVEWIDTH[3]:=CURACTIVEWIDTH[3]+MEM[R+3].INT;
  3661  CURACTIVEWIDTH[4]:=CURACTIVEWIDTH[4]+MEM[R+4].INT;
  3662  CURACTIVEWIDTH[5]:=CURACTIVEWIDTH[5]+MEM[R+5].INT;
  3663  CURACTIVEWIDTH[6]:=CURACTIVEWIDTH[6]+MEM[R+6].INT;
  3664  MEM[PREVR+1].INT:=MEM[PREVR+1].INT+MEM[R+1].INT;
  3665  MEM[PREVR+2].INT:=MEM[PREVR+2].INT+MEM[R+2].INT;
  3666  MEM[PREVR+3].INT:=MEM[PREVR+3].INT+MEM[R+3].INT;
  3667  MEM[PREVR+4].INT:=MEM[PREVR+4].INT+MEM[R+4].INT;
  3668  MEM[PREVR+5].INT:=MEM[PREVR+5].INT+MEM[R+5].INT;
  3669  MEM[PREVR+6].INT:=MEM[PREVR+6].INT+MEM[R+6].INT;
  3670  MEM[PREVR].HH.RH:=MEM[R].HH.RH;FREENODE(R,7);END;END{:860};END{:851};
  3671  END;
  3672  10:{[858:]IF CURP=PRINTEDNODE THEN IF CURP<>0 THEN IF MEM[CURP].HH.B0=7
  3673  THEN BEGIN T:=MEM[CURP].HH.B1;WHILE T>0 DO BEGIN T:=T-1;
  3674  PRINTEDNODE:=MEM[PRINTEDNODE].HH.RH;END;END[:858]}END;
  3675  {:829}{877:}PROCEDURE POSTLINEBREAK(FINALWIDOWPENALTY:INTEGER);
  3676  LABEL 30,31;VAR Q,R,S:HALFWORD;DISCBREAK:BOOLEAN;POSTDISCBREAK:BOOLEAN;
  3677  CURWIDTH:SCALED;CURINDENT:SCALED;T:QUARTERWORD;PEN:INTEGER;
  3678  CURLINE:HALFWORD;BEGIN{878:}Q:=MEM[BESTBET+1].HH.RH;CURP:=0;REPEAT R:=Q;
  3679  Q:=MEM[Q+1].HH.LH;MEM[R+1].HH.LH:=CURP;CURP:=R;UNTIL Q=0{:878};
  3680  CURLINE:=CURLIST.PGFIELD+1;REPEAT{880:}{881:}Q:=MEM[CURP+1].HH.RH;
  3681  DISCBREAK:=FALSE;POSTDISCBREAK:=FALSE;
  3682  IF Q<>0 THEN IF MEM[Q].HH.B0=10 THEN BEGIN DELETEGLUEREF(MEM[Q+1].HH.LH)
  3683  ;MEM[Q+1].HH.LH:=EQTB[2890].HH.RH;MEM[Q].HH.B1:=9;
  3684  MEM[EQTB[2890].HH.RH].HH.RH:=MEM[EQTB[2890].HH.RH].HH.RH+1;GOTO 30;
  3685  END ELSE BEGIN IF MEM[Q].HH.B0=7 THEN{882:}BEGIN T:=MEM[Q].HH.B1;
  3686  {883:}IF T=0 THEN R:=MEM[Q].HH.RH ELSE BEGIN R:=Q;
  3687  WHILE T>1 DO BEGIN R:=MEM[R].HH.RH;T:=T-1;END;S:=MEM[R].HH.RH;
  3688  R:=MEM[S].HH.RH;MEM[S].HH.RH:=0;FLUSHNODELIST(MEM[Q].HH.RH);
  3689  MEM[Q].HH.B1:=0;END{:883};
  3690  IF MEM[Q+1].HH.RH<>0 THEN{884:}BEGIN S:=MEM[Q+1].HH.RH;
  3691  WHILE MEM[S].HH.RH<>0 DO S:=MEM[S].HH.RH;MEM[S].HH.RH:=R;
  3692  R:=MEM[Q+1].HH.RH;MEM[Q+1].HH.RH:=0;POSTDISCBREAK:=TRUE;END{:884};
  3693  IF MEM[Q+1].HH.LH<>0 THEN{885:}BEGIN S:=MEM[Q+1].HH.LH;MEM[Q].HH.RH:=S;
  3694  WHILE MEM[S].HH.RH<>0 DO S:=MEM[S].HH.RH;MEM[Q+1].HH.LH:=0;Q:=S;
  3695  END{:885};MEM[Q].HH.RH:=R;DISCBREAK:=TRUE;
  3696  END{:882}ELSE IF(MEM[Q].HH.B0=9)OR(MEM[Q].HH.B0=11)THEN MEM[Q+1].INT:=0;
  3697  END ELSE BEGIN Q:=29997;WHILE MEM[Q].HH.RH<>0 DO Q:=MEM[Q].HH.RH;END;
  3698  {886:}R:=NEWPARAMGLUE(8);MEM[R].HH.RH:=MEM[Q].HH.RH;MEM[Q].HH.RH:=R;
  3699  Q:=R{:886};30:{:881};{887:}R:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;
  3700  Q:=MEM[29997].HH.RH;MEM[29997].HH.RH:=R;
  3701  IF EQTB[2889].HH.RH<>0 THEN BEGIN R:=NEWPARAMGLUE(7);MEM[R].HH.RH:=Q;
  3702  Q:=R;END{:887};
  3703  {889:}IF CURLINE>LASTSPECIALLINE THEN BEGIN CURWIDTH:=SECONDWIDTH;
  3704  CURINDENT:=SECONDINDENT;
  3705  END ELSE IF EQTB[3412].HH.RH=0 THEN BEGIN CURWIDTH:=FIRSTWIDTH;
  3706  CURINDENT:=FIRSTINDENT;
  3707  END ELSE BEGIN CURWIDTH:=MEM[EQTB[3412].HH.RH+2*CURLINE].INT;
  3708  CURINDENT:=MEM[EQTB[3412].HH.RH+2*CURLINE-1].INT;END;ADJUSTTAIL:=29995;
  3709  JUSTBOX:=HPACK(Q,CURWIDTH,0);MEM[JUSTBOX+4].INT:=CURINDENT{:889};
  3710  {888:}APPENDTOVLIST(JUSTBOX);
  3711  IF 29995<>ADJUSTTAIL THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=MEM[29995]
  3712  .HH.RH;CURLIST.TAILFIELD:=ADJUSTTAIL;END;ADJUSTTAIL:=0{:888};
  3713  {890:}IF CURLINE+1<>BESTLINE THEN BEGIN PEN:=EQTB[5276].INT;
  3714  IF CURLINE=CURLIST.PGFIELD+1 THEN PEN:=PEN+EQTB[5268].INT;
  3715  IF CURLINE+2=BESTLINE THEN PEN:=PEN+FINALWIDOWPENALTY;
  3716  IF DISCBREAK THEN PEN:=PEN+EQTB[5271].INT;
  3717  IF PEN<>0 THEN BEGIN R:=NEWPENALTY(PEN);MEM[CURLIST.TAILFIELD].HH.RH:=R;
  3718  CURLIST.TAILFIELD:=R;END;END{:890}{:880};CURLINE:=CURLINE+1;
  3719  CURP:=MEM[CURP+1].HH.LH;
  3720  IF CURP<>0 THEN IF NOT POSTDISCBREAK THEN{879:}BEGIN R:=29997;
  3721  WHILE TRUE DO BEGIN Q:=MEM[R].HH.RH;IF Q=MEM[CURP+1].HH.RH THEN GOTO 31;
  3722  IF(Q>=HIMEMMIN)THEN GOTO 31;IF(MEM[Q].HH.B0<9)THEN GOTO 31;
  3723  IF MEM[Q].HH.B0=11 THEN IF MEM[Q].HH.B1<>1 THEN GOTO 31;R:=Q;END;
  3724  31:IF R<>29997 THEN BEGIN MEM[R].HH.RH:=0;
  3725  FLUSHNODELIST(MEM[29997].HH.RH);MEM[29997].HH.RH:=Q;END;END{:879};
  3726  UNTIL CURP=0;
  3727  IF(CURLINE<>BESTLINE)OR(MEM[29997].HH.RH<>0)THEN CONFUSION(939);
  3728  CURLIST.PGFIELD:=BESTLINE-1;END;
  3729  {:877}{895:}{906:}FUNCTION RECONSTITUTE(J,N:SMALLNUMBER;
  3730  BCHAR,HCHAR:HALFWORD):SMALLNUMBER;LABEL 22,30;VAR P:HALFWORD;T:HALFWORD;
  3731  Q:FOURQUARTERS;CURRH:HALFWORD;TESTCHAR:HALFWORD;W:SCALED;K:FONTINDEX;
  3732  BEGIN HYPHENPASSED:=0;T:=29996;W:=0;MEM[29996].HH.RH:=0;
  3733  {908:}CURL:=HU[J]+0;CURQ:=T;IF J=0 THEN BEGIN LIGATUREPRESENT:=INITLIG;
  3734  P:=INITLIST;IF LIGATUREPRESENT THEN LFTHIT:=INITLFT;
  3735  WHILE P>0 DO BEGIN BEGIN MEM[T].HH.RH:=GETAVAIL;T:=MEM[T].HH.RH;
  3736  MEM[T].HH.B0:=HF;MEM[T].HH.B1:=MEM[P].HH.B1;END;P:=MEM[P].HH.RH;END;
  3737  END ELSE IF CURL<256 THEN BEGIN MEM[T].HH.RH:=GETAVAIL;T:=MEM[T].HH.RH;
  3738  MEM[T].HH.B0:=HF;MEM[T].HH.B1:=CURL;END;LIGSTACK:=0;
  3739  BEGIN IF J<N THEN CURR:=HU[J+1]+0 ELSE CURR:=BCHAR;
  3740  IF ODD(HYF[J])THEN CURRH:=HCHAR ELSE CURRH:=256;END{:908};
  3741  22:{909:}IF CURL=256 THEN BEGIN K:=BCHARLABEL[HF];
  3742  IF K=0 THEN GOTO 30 ELSE Q:=FONTINFO[K].QQQQ;
  3743  END ELSE BEGIN Q:=FONTINFO[CHARBASE[HF]+CURL].QQQQ;
  3744  IF((Q.B2-0)MOD 4)<>1 THEN GOTO 30;K:=LIGKERNBASE[HF]+Q.B3;
  3745  Q:=FONTINFO[K].QQQQ;
  3746  IF Q.B0>128 THEN BEGIN K:=LIGKERNBASE[HF]+256*Q.B2+Q.B3+32768-256*(128);
  3747  Q:=FONTINFO[K].QQQQ;END;END;
  3748  IF CURRH<256 THEN TESTCHAR:=CURRH ELSE TESTCHAR:=CURR;
  3749  WHILE TRUE DO BEGIN IF Q.B1=TESTCHAR THEN IF Q.B0<=128 THEN IF CURRH<256
  3750  THEN BEGIN HYPHENPASSED:=J;HCHAR:=256;CURRH:=256;GOTO 22;
  3751  END ELSE BEGIN IF HCHAR<256 THEN IF ODD(HYF[J])THEN BEGIN HYPHENPASSED:=
  3752  J;HCHAR:=256;END;
  3753  IF Q.B2<128 THEN{911:}BEGIN IF CURL=256 THEN LFTHIT:=TRUE;
  3754  IF J=N THEN IF LIGSTACK=0 THEN RTHIT:=TRUE;
  3755  BEGIN IF INTERRUPT<>0 THEN PAUSEFORINSTRUCTIONS;END;
  3756  CASE Q.B2 OF 1,5:BEGIN CURL:=Q.B3;LIGATUREPRESENT:=TRUE;END;
  3757  2,6:BEGIN CURR:=Q.B3;
  3758  IF LIGSTACK>0 THEN MEM[LIGSTACK].HH.B1:=CURR ELSE BEGIN LIGSTACK:=
  3759  NEWLIGITEM(CURR);IF J=N THEN BCHAR:=256 ELSE BEGIN P:=GETAVAIL;
  3760  MEM[LIGSTACK+1].HH.RH:=P;MEM[P].HH.B1:=HU[J+1]+0;MEM[P].HH.B0:=HF;END;
  3761  END;END;3:BEGIN CURR:=Q.B3;P:=LIGSTACK;LIGSTACK:=NEWLIGITEM(CURR);
  3762  MEM[LIGSTACK].HH.RH:=P;END;
  3763  7,11:BEGIN IF LIGATUREPRESENT THEN BEGIN P:=NEWLIGATURE(HF,CURL,MEM[CURQ
  3764  ].HH.RH);IF LFTHIT THEN BEGIN MEM[P].HH.B1:=2;LFTHIT:=FALSE;END;
  3765  IF FALSE THEN IF LIGSTACK=0 THEN BEGIN MEM[P].HH.B1:=MEM[P].HH.B1+1;
  3766  RTHIT:=FALSE;END;MEM[CURQ].HH.RH:=P;T:=P;LIGATUREPRESENT:=FALSE;END;
  3767  CURQ:=T;CURL:=Q.B3;LIGATUREPRESENT:=TRUE;END;ELSE BEGIN CURL:=Q.B3;
  3768  LIGATUREPRESENT:=TRUE;
  3769  IF LIGSTACK>0 THEN BEGIN IF MEM[LIGSTACK+1].HH.RH>0 THEN BEGIN MEM[T].HH
  3770  .RH:=MEM[LIGSTACK+1].HH.RH;T:=MEM[T].HH.RH;J:=J+1;END;P:=LIGSTACK;
  3771  LIGSTACK:=MEM[P].HH.RH;FREENODE(P,2);
  3772  IF LIGSTACK=0 THEN BEGIN IF J<N THEN CURR:=HU[J+1]+0 ELSE CURR:=BCHAR;
  3773  IF ODD(HYF[J])THEN CURRH:=HCHAR ELSE CURRH:=256;
  3774  END ELSE CURR:=MEM[LIGSTACK].HH.B1;
  3775  END ELSE IF J=N THEN GOTO 30 ELSE BEGIN BEGIN MEM[T].HH.RH:=GETAVAIL;
  3776  T:=MEM[T].HH.RH;MEM[T].HH.B0:=HF;MEM[T].HH.B1:=CURR;END;J:=J+1;
  3777  BEGIN IF J<N THEN CURR:=HU[J+1]+0 ELSE CURR:=BCHAR;
  3778  IF ODD(HYF[J])THEN CURRH:=HCHAR ELSE CURRH:=256;END;END;END END;
  3779  IF Q.B2>4 THEN IF Q.B2<>7 THEN GOTO 30;GOTO 22;END{:911};
  3780  W:=FONTINFO[KERNBASE[HF]+256*Q.B2+Q.B3].INT;GOTO 30;END;
  3781  IF Q.B0>=128 THEN IF CURRH=256 THEN GOTO 30 ELSE BEGIN CURRH:=256;
  3782  GOTO 22;END;K:=K+Q.B0+1;Q:=FONTINFO[K].QQQQ;END;30:{:909};
  3783  {910:}IF LIGATUREPRESENT THEN BEGIN P:=NEWLIGATURE(HF,CURL,MEM[CURQ].HH.
  3784  RH);IF LFTHIT THEN BEGIN MEM[P].HH.B1:=2;LFTHIT:=FALSE;END;
  3785  IF RTHIT THEN IF LIGSTACK=0 THEN BEGIN MEM[P].HH.B1:=MEM[P].HH.B1+1;
  3786  RTHIT:=FALSE;END;MEM[CURQ].HH.RH:=P;T:=P;LIGATUREPRESENT:=FALSE;END;
  3787  IF W<>0 THEN BEGIN MEM[T].HH.RH:=NEWKERN(W);T:=MEM[T].HH.RH;W:=0;END;
  3788  IF LIGSTACK>0 THEN BEGIN CURQ:=T;CURL:=MEM[LIGSTACK].HH.B1;
  3789  LIGATUREPRESENT:=TRUE;
  3790  BEGIN IF MEM[LIGSTACK+1].HH.RH>0 THEN BEGIN MEM[T].HH.RH:=MEM[LIGSTACK+1
  3791  ].HH.RH;T:=MEM[T].HH.RH;J:=J+1;END;P:=LIGSTACK;LIGSTACK:=MEM[P].HH.RH;
  3792  FREENODE(P,2);
  3793  IF LIGSTACK=0 THEN BEGIN IF J<N THEN CURR:=HU[J+1]+0 ELSE CURR:=BCHAR;
  3794  IF ODD(HYF[J])THEN CURRH:=HCHAR ELSE CURRH:=256;
  3795  END ELSE CURR:=MEM[LIGSTACK].HH.B1;END;GOTO 22;END{:910};
  3796  RECONSTITUTE:=J;END;{:906}PROCEDURE HYPHENATE;
  3797  LABEL 50,30,40,41,42,45,10;VAR{901:}I,J,L:0..65;Q,R,S:HALFWORD;
  3798  BCHAR:HALFWORD;{:901}{912:}MAJORTAIL,MINORTAIL:HALFWORD;C:ASCIICODE;
  3799  CLOC:0..63;RCOUNT:INTEGER;HYFNODE:HALFWORD;{:912}{922:}Z:TRIEPOINTER;
  3800  V:INTEGER;{:922}{929:}H:HYPHPOINTER;K:STRNUMBER;U:POOLPOINTER;
  3801  {:929}BEGIN{923:}FOR J:=0 TO HN DO HYF[J]:=0;{930:}H:=HC[1];HN:=HN+1;
  3802  HC[HN]:=CURLANG;FOR J:=2 TO HN DO H:=(H+H+HC[J])MOD 307;
  3803  WHILE TRUE DO BEGIN{931:}K:=HYPHWORD[H];IF K=0 THEN GOTO 45;
  3804  IF(STRSTART[K+1]-STRSTART[K])<HN THEN GOTO 45;
  3805  IF(STRSTART[K+1]-STRSTART[K])=HN THEN BEGIN J:=1;U:=STRSTART[K];
  3806  REPEAT IF STRPOOL[U]<HC[J]THEN GOTO 45;IF STRPOOL[U]>HC[J]THEN GOTO 30;
  3807  J:=J+1;U:=U+1;UNTIL J>HN;{932:}S:=HYPHLIST[H];
  3808  WHILE S<>0 DO BEGIN HYF[MEM[S].HH.LH]:=1;S:=MEM[S].HH.RH;END{:932};
  3809  HN:=HN-1;GOTO 40;END;30:{:931};IF H>0 THEN H:=H-1 ELSE H:=307;END;
  3810  45:HN:=HN-1{:930};IF TRIE[CURLANG+1].B1<>CURLANG+0 THEN GOTO 10;
  3811  HC[0]:=0;HC[HN+1]:=0;HC[HN+2]:=256;
  3812  FOR J:=0 TO HN-RHYF+1 DO BEGIN Z:=TRIE[CURLANG+1].RH+HC[J];L:=J;
  3813  WHILE HC[L]=TRIE[Z].B1-0 DO BEGIN IF TRIE[Z].B0<>0 THEN{924:}BEGIN V:=
  3814  TRIE[Z].B0;REPEAT V:=V+OPSTART[CURLANG];I:=L-HYFDISTANCE[V];
  3815  IF HYFNUM[V]>HYF[I]THEN HYF[I]:=HYFNUM[V];V:=HYFNEXT[V];UNTIL V=0;
  3816  END{:924};L:=L+1;Z:=TRIE[Z].RH+HC[L];END;END;
  3817  40:FOR J:=0 TO LHYF-1 DO HYF[J]:=0;
  3818  FOR J:=0 TO RHYF-1 DO HYF[HN-J]:=0{:923};
  3819  {902:}FOR J:=LHYF TO HN-RHYF DO IF ODD(HYF[J])THEN GOTO 41;GOTO 10;
  3820  41:{:902};{903:}Q:=MEM[HB].HH.RH;MEM[HB].HH.RH:=0;R:=MEM[HA].HH.RH;
  3821  MEM[HA].HH.RH:=0;BCHAR:=HYFBCHAR;
  3822  IF(HA>=HIMEMMIN)THEN IF MEM[HA].HH.B0<>HF THEN GOTO 42 ELSE BEGIN
  3823  INITLIST:=HA;INITLIG:=FALSE;HU[0]:=MEM[HA].HH.B1-0;
  3824  END ELSE IF MEM[HA].HH.B0=6 THEN IF MEM[HA+1].HH.B0<>HF THEN GOTO 42
  3825  ELSE BEGIN INITLIST:=MEM[HA+1].HH.RH;INITLIG:=TRUE;
  3826  INITLFT:=(MEM[HA].HH.B1>1);HU[0]:=MEM[HA+1].HH.B1-0;
  3827  IF INITLIST=0 THEN IF INITLFT THEN BEGIN HU[0]:=256;INITLIG:=FALSE;END;
  3828  FREENODE(HA,2);
  3829  END ELSE BEGIN IF NOT(R>=HIMEMMIN)THEN IF MEM[R].HH.B0=6 THEN IF MEM[R].
  3830  HH.B1>1 THEN GOTO 42;J:=1;S:=HA;INITLIST:=0;GOTO 50;END;S:=CURP;
  3831  WHILE MEM[S].HH.RH<>HA DO S:=MEM[S].HH.RH;J:=0;GOTO 50;42:S:=HA;J:=0;
  3832  HU[0]:=256;INITLIG:=FALSE;INITLIST:=0;50:FLUSHNODELIST(R);
  3833  {913:}REPEAT L:=J;J:=RECONSTITUTE(J,HN,BCHAR,HYFCHAR+0)+1;
  3834  IF HYPHENPASSED=0 THEN BEGIN MEM[S].HH.RH:=MEM[29996].HH.RH;
  3835  WHILE MEM[S].HH.RH>0 DO S:=MEM[S].HH.RH;IF ODD(HYF[J-1])THEN BEGIN L:=J;
  3836  HYPHENPASSED:=J-1;MEM[29996].HH.RH:=0;END;END;
  3837  IF HYPHENPASSED>0 THEN{914:}REPEAT R:=GETNODE(2);
  3838  MEM[R].HH.RH:=MEM[29996].HH.RH;MEM[R].HH.B0:=7;MAJORTAIL:=R;RCOUNT:=0;
  3839  WHILE MEM[MAJORTAIL].HH.RH>0 DO BEGIN MAJORTAIL:=MEM[MAJORTAIL].HH.RH;
  3840  RCOUNT:=RCOUNT+1;END;I:=HYPHENPASSED;HYF[I]:=0;{915:}MINORTAIL:=0;
  3841  MEM[R+1].HH.LH:=0;HYFNODE:=NEWCHARACTER(HF,HYFCHAR);
  3842  IF HYFNODE<>0 THEN BEGIN I:=I+1;C:=HU[I];HU[I]:=HYFCHAR;
  3843  BEGIN MEM[HYFNODE].HH.RH:=AVAIL;AVAIL:=HYFNODE;{DYNUSED:=DYNUSED-1;}END;
  3844  END;WHILE L<=I DO BEGIN L:=RECONSTITUTE(L,I,FONTBCHAR[HF],256)+1;
  3845  IF MEM[29996].HH.RH>0 THEN BEGIN IF MINORTAIL=0 THEN MEM[R+1].HH.LH:=MEM
  3846  [29996].HH.RH ELSE MEM[MINORTAIL].HH.RH:=MEM[29996].HH.RH;
  3847  MINORTAIL:=MEM[29996].HH.RH;
  3848  WHILE MEM[MINORTAIL].HH.RH>0 DO MINORTAIL:=MEM[MINORTAIL].HH.RH;END;END;
  3849  IF HYFNODE<>0 THEN BEGIN HU[I]:=C;L:=I;I:=I-1;END{:915};
  3850  {916:}MINORTAIL:=0;MEM[R+1].HH.RH:=0;CLOC:=0;
  3851  IF BCHARLABEL[HF]<>0 THEN BEGIN L:=L-1;C:=HU[L];CLOC:=L;HU[L]:=256;END;
  3852  WHILE L<J DO BEGIN REPEAT L:=RECONSTITUTE(L,HN,BCHAR,256)+1;
  3853  IF CLOC>0 THEN BEGIN HU[CLOC]:=C;CLOC:=0;END;
  3854  IF MEM[29996].HH.RH>0 THEN BEGIN IF MINORTAIL=0 THEN MEM[R+1].HH.RH:=MEM
  3855  [29996].HH.RH ELSE MEM[MINORTAIL].HH.RH:=MEM[29996].HH.RH;
  3856  MINORTAIL:=MEM[29996].HH.RH;
  3857  WHILE MEM[MINORTAIL].HH.RH>0 DO MINORTAIL:=MEM[MINORTAIL].HH.RH;END;
  3858  UNTIL L>=J;WHILE L>J DO{917:}BEGIN J:=RECONSTITUTE(J,HN,BCHAR,256)+1;
  3859  MEM[MAJORTAIL].HH.RH:=MEM[29996].HH.RH;
  3860  WHILE MEM[MAJORTAIL].HH.RH>0 DO BEGIN MAJORTAIL:=MEM[MAJORTAIL].HH.RH;
  3861  RCOUNT:=RCOUNT+1;END;END{:917};END{:916};
  3862  {918:}IF RCOUNT>127 THEN BEGIN MEM[S].HH.RH:=MEM[R].HH.RH;
  3863  MEM[R].HH.RH:=0;FLUSHNODELIST(R);END ELSE BEGIN MEM[S].HH.RH:=R;
  3864  MEM[R].HH.B1:=RCOUNT;END;S:=MAJORTAIL{:918};HYPHENPASSED:=J-1;
  3865  MEM[29996].HH.RH:=0;UNTIL NOT ODD(HYF[J-1]){:914};UNTIL J>HN;
  3866  MEM[S].HH.RH:=Q{:913};FLUSHLIST(INITLIST){:903};10:END;
  3867  {:895}{942:}{944:}FUNCTION NEWTRIEOP(D,N:SMALLNUMBER;
  3868  V:QUARTERWORD):QUARTERWORD;LABEL 10;VAR H:-TRIEOPSIZE..TRIEOPSIZE;
  3869  U:QUARTERWORD;L:0..TRIEOPSIZE;
  3870  BEGIN H:=ABS(N+313*D+361*V+1009*CURLANG)MOD(TRIEOPSIZE+TRIEOPSIZE)-
  3871  TRIEOPSIZE;WHILE TRUE DO BEGIN L:=TRIEOPHASH[H];
  3872  IF L=0 THEN BEGIN IF TRIEOPPTR=TRIEOPSIZE THEN OVERFLOW(949,TRIEOPSIZE);
  3873  U:=TRIEUSED[CURLANG];IF U=255 THEN OVERFLOW(950,255);
  3874  TRIEOPPTR:=TRIEOPPTR+1;U:=U+1;TRIEUSED[CURLANG]:=U;
  3875  HYFDISTANCE[TRIEOPPTR]:=D;HYFNUM[TRIEOPPTR]:=N;HYFNEXT[TRIEOPPTR]:=V;
  3876  TRIEOPLANG[TRIEOPPTR]:=CURLANG;TRIEOPHASH[H]:=TRIEOPPTR;
  3877  TRIEOPVAL[TRIEOPPTR]:=U;NEWTRIEOP:=U;GOTO 10;END;
  3878  IF(HYFDISTANCE[L]=D)AND(HYFNUM[L]=N)AND(HYFNEXT[L]=V)AND(TRIEOPLANG[L]=
  3879  CURLANG)THEN BEGIN NEWTRIEOP:=TRIEOPVAL[L];GOTO 10;END;
  3880  IF H>-TRIEOPSIZE THEN H:=H-1 ELSE H:=TRIEOPSIZE;END;10:END;
  3881  {:944}{948:}FUNCTION TRIENODE(P:TRIEPOINTER):TRIEPOINTER;LABEL 10;
  3882  VAR H:TRIEPOINTER;Q:TRIEPOINTER;
  3883  BEGIN H:=ABS(TRIEC[P]+1009*TRIEO[P]+2718*TRIEL[P]+3142*TRIER[P])MOD
  3884  TRIESIZE;WHILE TRUE DO BEGIN Q:=TRIEHASH[H];
  3885  IF Q=0 THEN BEGIN TRIEHASH[H]:=P;TRIENODE:=P;GOTO 10;END;
  3886  IF(TRIEC[Q]=TRIEC[P])AND(TRIEO[Q]=TRIEO[P])AND(TRIEL[Q]=TRIEL[P])AND(
  3887  TRIER[Q]=TRIER[P])THEN BEGIN TRIENODE:=Q;GOTO 10;END;
  3888  IF H>0 THEN H:=H-1 ELSE H:=TRIESIZE;END;10:END;
  3889  {:948}{949:}FUNCTION COMPRESSTRIE(P:TRIEPOINTER):TRIEPOINTER;
  3890  BEGIN IF P=0 THEN COMPRESSTRIE:=0 ELSE BEGIN TRIEL[P]:=COMPRESSTRIE(
  3891  TRIEL[P]);TRIER[P]:=COMPRESSTRIE(TRIER[P]);COMPRESSTRIE:=TRIENODE(P);
  3892  END;END;{:949}{953:}PROCEDURE FIRSTFIT(P:TRIEPOINTER);LABEL 45,40;
  3893  VAR H:TRIEPOINTER;Z:TRIEPOINTER;Q:TRIEPOINTER;C:ASCIICODE;
  3894  L,R:TRIEPOINTER;LL:1..256;BEGIN C:=TRIEC[P];Z:=TRIEMIN[C];
  3895  WHILE TRUE DO BEGIN H:=Z-C;
  3896  {954:}IF TRIEMAX<H+256 THEN BEGIN IF TRIESIZE<=H+256 THEN OVERFLOW(951,
  3897  TRIESIZE);REPEAT TRIEMAX:=TRIEMAX+1;TRIETAKEN[TRIEMAX]:=FALSE;
  3898  TRIE[TRIEMAX].RH:=TRIEMAX+1;TRIE[TRIEMAX].LH:=TRIEMAX-1;
  3899  UNTIL TRIEMAX=H+256;END{:954};IF TRIETAKEN[H]THEN GOTO 45;
  3900  {955:}Q:=TRIER[P];
  3901  WHILE Q>0 DO BEGIN IF TRIE[H+TRIEC[Q]].RH=0 THEN GOTO 45;Q:=TRIER[Q];
  3902  END;GOTO 40{:955};45:Z:=TRIE[Z].RH;END;40:{956:}TRIETAKEN[H]:=TRUE;
  3903  TRIEHASH[P]:=H;Q:=P;REPEAT Z:=H+TRIEC[Q];L:=TRIE[Z].LH;R:=TRIE[Z].RH;
  3904  TRIE[R].LH:=L;TRIE[L].RH:=R;TRIE[Z].RH:=0;
  3905  IF L<256 THEN BEGIN IF Z<256 THEN LL:=Z ELSE LL:=256;
  3906  REPEAT TRIEMIN[L]:=R;L:=L+1;UNTIL L=LL;END;Q:=TRIER[Q];UNTIL Q=0{:956};
  3907  END;{:953}{957:}PROCEDURE TRIEPACK(P:TRIEPOINTER);VAR Q:TRIEPOINTER;
  3908  BEGIN REPEAT Q:=TRIEL[P];
  3909  IF(Q>0)AND(TRIEHASH[Q]=0)THEN BEGIN FIRSTFIT(Q);TRIEPACK(Q);END;
  3910  P:=TRIER[P];UNTIL P=0;END;{:957}{959:}PROCEDURE TRIEFIX(P:TRIEPOINTER);
  3911  VAR Q:TRIEPOINTER;C:ASCIICODE;Z:TRIEPOINTER;BEGIN Z:=TRIEHASH[P];
  3912  REPEAT Q:=TRIEL[P];C:=TRIEC[P];TRIE[Z+C].RH:=TRIEHASH[Q];
  3913  TRIE[Z+C].B1:=C+0;TRIE[Z+C].B0:=TRIEO[P];IF Q>0 THEN TRIEFIX(Q);
  3914  P:=TRIER[P];UNTIL P=0;END;{:959}{960:}PROCEDURE NEWPATTERNS;LABEL 30,31;
  3915  VAR K,L:0..64;DIGITSENSED:BOOLEAN;V:QUARTERWORD;P,Q:TRIEPOINTER;
  3916  FIRSTCHILD:BOOLEAN;C:ASCIICODE;
  3917  BEGIN IF TRIENOTREADY THEN BEGIN IF EQTB[5313].INT<=0 THEN CURLANG:=0
  3918  ELSE IF EQTB[5313].INT>255 THEN CURLANG:=0 ELSE CURLANG:=EQTB[5313].INT;
  3919  SCANLEFTBRACE;{961:}K:=0;HYF[0]:=0;DIGITSENSED:=FALSE;
  3920  WHILE TRUE DO BEGIN GETXTOKEN;
  3921  CASE CURCMD OF 11,12:{962:}IF DIGITSENSED OR(CURCHR<48)OR(CURCHR>57)THEN
  3922  BEGIN IF CURCHR=46 THEN CURCHR:=0 ELSE BEGIN CURCHR:=EQTB[4239+CURCHR].
  3923  HH.RH;IF CURCHR=0 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  3924  PRINT(957);END;BEGIN HELPPTR:=1;HELPLINE[0]:=956;END;ERROR;END;END;
  3925  IF K<63 THEN BEGIN K:=K+1;HC[K]:=CURCHR;HYF[K]:=0;DIGITSENSED:=FALSE;
  3926  END;END ELSE IF K<63 THEN BEGIN HYF[K]:=CURCHR-48;DIGITSENSED:=TRUE;
  3927  END{:962};
  3928  10,2:BEGIN IF K>0 THEN{963:}BEGIN{965:}IF HC[1]=0 THEN HYF[0]:=0;
  3929  IF HC[K]=0 THEN HYF[K]:=0;L:=K;V:=0;
  3930  WHILE TRUE DO BEGIN IF HYF[L]<>0 THEN V:=NEWTRIEOP(K-L,HYF[L],V);
  3931  IF L>0 THEN L:=L-1 ELSE GOTO 31;END;31:{:965};Q:=0;HC[0]:=CURLANG;
  3932  WHILE L<=K DO BEGIN C:=HC[L];L:=L+1;P:=TRIEL[Q];FIRSTCHILD:=TRUE;
  3933  WHILE(P>0)AND(C>TRIEC[P])DO BEGIN Q:=P;P:=TRIER[Q];FIRSTCHILD:=FALSE;
  3934  END;
  3935  IF(P=0)OR(C<TRIEC[P])THEN{964:}BEGIN IF TRIEPTR=TRIESIZE THEN OVERFLOW(
  3936  951,TRIESIZE);TRIEPTR:=TRIEPTR+1;TRIER[TRIEPTR]:=P;P:=TRIEPTR;
  3937  TRIEL[P]:=0;IF FIRSTCHILD THEN TRIEL[Q]:=P ELSE TRIER[Q]:=P;TRIEC[P]:=C;
  3938  TRIEO[P]:=0;END{:964};Q:=P;END;
  3939  IF TRIEO[Q]<>0 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  3940  PRINT(958);END;BEGIN HELPPTR:=1;HELPLINE[0]:=956;END;ERROR;END;
  3941  TRIEO[Q]:=V;END{:963};IF CURCMD=2 THEN GOTO 30;K:=0;HYF[0]:=0;
  3942  DIGITSENSED:=FALSE;END;ELSE BEGIN BEGIN IF INTERACTION=3 THEN;
  3943  PRINTNL(262);PRINT(955);END;PRINTESC(953);BEGIN HELPPTR:=1;
  3944  HELPLINE[0]:=956;END;ERROR;END END;END;30:{:961};
  3945  END ELSE BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(952);END;
  3946  PRINTESC(953);BEGIN HELPPTR:=1;HELPLINE[0]:=954;END;ERROR;
  3947  MEM[29988].HH.RH:=SCANTOKS(FALSE,FALSE);FLUSHLIST(DEFREF);END;END;
  3948  {:960}{966:}PROCEDURE INITTRIE;VAR P:TRIEPOINTER;J,K,T:INTEGER;
  3949  R,S:TRIEPOINTER;H:TWOHALVES;BEGIN{952:}{945:}OPSTART[0]:=-0;
  3950  FOR J:=1 TO 255 DO OPSTART[J]:=OPSTART[J-1]+TRIEUSED[J-1]-0;
  3951  FOR J:=1 TO TRIEOPPTR DO TRIEOPHASH[J]:=OPSTART[TRIEOPLANG[J]]+TRIEOPVAL
  3952  [J];
  3953  FOR J:=1 TO TRIEOPPTR DO WHILE TRIEOPHASH[J]>J DO BEGIN K:=TRIEOPHASH[J]
  3954  ;T:=HYFDISTANCE[K];HYFDISTANCE[K]:=HYFDISTANCE[J];HYFDISTANCE[J]:=T;
  3955  T:=HYFNUM[K];HYFNUM[K]:=HYFNUM[J];HYFNUM[J]:=T;T:=HYFNEXT[K];
  3956  HYFNEXT[K]:=HYFNEXT[J];HYFNEXT[J]:=T;TRIEOPHASH[J]:=TRIEOPHASH[K];
  3957  TRIEOPHASH[K]:=K;END{:945};FOR P:=0 TO TRIESIZE DO TRIEHASH[P]:=0;
  3958  TRIEL[0]:=COMPRESSTRIE(TRIEL[0]);FOR P:=0 TO TRIEPTR DO TRIEHASH[P]:=0;
  3959  FOR P:=0 TO 255 DO TRIEMIN[P]:=P+1;TRIE[0].RH:=1;TRIEMAX:=0{:952};
  3960  IF TRIEL[0]<>0 THEN BEGIN FIRSTFIT(TRIEL[0]);TRIEPACK(TRIEL[0]);END;
  3961  {958:}H.RH:=0;H.B0:=0;H.B1:=0;
  3962  IF TRIEL[0]=0 THEN BEGIN FOR R:=0 TO 256 DO TRIE[R]:=H;TRIEMAX:=256;
  3963  END ELSE BEGIN TRIEFIX(TRIEL[0]);R:=0;REPEAT S:=TRIE[R].RH;TRIE[R]:=H;
  3964  R:=S;UNTIL R>TRIEMAX;END;TRIE[0].B1:=63;{:958};TRIENOTREADY:=FALSE;END;
  3965  {:966}{:942}PROCEDURE LINEBREAK(FINALWIDOWPENALTY:INTEGER);
  3966  LABEL 30,31,32,33,34,35,22;VAR{862:}AUTOBREAKING:BOOLEAN;PREVP:HALFWORD;
  3967  Q,R,S,PREVS:HALFWORD;F:INTERNALFONTNUMBER;{:862}{893:}J:SMALLNUMBER;
  3968  C:0..255;{:893}BEGIN PACKBEGINLINE:=CURLIST.MLFIELD;
  3969  {816:}MEM[29997].HH.RH:=MEM[CURLIST.HEADFIELD].HH.RH;
  3970  IF(CURLIST.TAILFIELD>=HIMEMMIN)THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=
  3971  NEWPENALTY(10000);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
  3972  END ELSE IF MEM[CURLIST.TAILFIELD].HH.B0<>10 THEN BEGIN MEM[CURLIST.
  3973  TAILFIELD].HH.RH:=NEWPENALTY(10000);
  3974  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
  3975  END ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.B0:=12;
  3976  DELETEGLUEREF(MEM[CURLIST.TAILFIELD+1].HH.LH);
  3977  FLUSHNODELIST(MEM[CURLIST.TAILFIELD+1].HH.RH);
  3978  MEM[CURLIST.TAILFIELD+1].INT:=10000;END;
  3979  MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(14);
  3980  INITCURLANG:=CURLIST.PGFIELD MOD 65536;
  3981  INITLHYF:=CURLIST.PGFIELD DIV 4194304;
  3982  INITRHYF:=(CURLIST.PGFIELD DIV 65536)MOD 64;POPNEST;
  3983  {:816}{827:}NOSHRINKERRORYET:=TRUE;
  3984  IF(MEM[EQTB[2889].HH.RH].HH.B1<>0)AND(MEM[EQTB[2889].HH.RH+3].INT<>0)
  3985  THEN BEGIN EQTB[2889].HH.RH:=FINITESHRINK(EQTB[2889].HH.RH);END;
  3986  IF(MEM[EQTB[2890].HH.RH].HH.B1<>0)AND(MEM[EQTB[2890].HH.RH+3].INT<>0)
  3987  THEN BEGIN EQTB[2890].HH.RH:=FINITESHRINK(EQTB[2890].HH.RH);END;
  3988  Q:=EQTB[2889].HH.RH;R:=EQTB[2890].HH.RH;
  3989  BACKGROUND[1]:=MEM[Q+1].INT+MEM[R+1].INT;BACKGROUND[2]:=0;
  3990  BACKGROUND[3]:=0;BACKGROUND[4]:=0;BACKGROUND[5]:=0;
  3991  BACKGROUND[2+MEM[Q].HH.B0]:=MEM[Q+2].INT;
  3992  BACKGROUND[2+MEM[R].HH.B0]:=BACKGROUND[2+MEM[R].HH.B0]+MEM[R+2].INT;
  3993  BACKGROUND[6]:=MEM[Q+3].INT+MEM[R+3].INT;
  3994  {:827}{834:}MINIMUMDEMERITS:=1073741823;MINIMALDEMERITS[3]:=1073741823;
  3995  MINIMALDEMERITS[2]:=1073741823;MINIMALDEMERITS[1]:=1073741823;
  3996  MINIMALDEMERITS[0]:=1073741823;
  3997  {:834}{848:}IF EQTB[3412].HH.RH=0 THEN IF EQTB[5847].INT=0 THEN BEGIN
  3998  LASTSPECIALLINE:=0;SECONDWIDTH:=EQTB[5833].INT;SECONDINDENT:=0;
  3999  END ELSE{849:}BEGIN LASTSPECIALLINE:=ABS(EQTB[5304].INT);
  4000  IF EQTB[5304].INT<0 THEN BEGIN FIRSTWIDTH:=EQTB[5833].INT-ABS(EQTB[5847]
  4001  .INT);
  4002  IF EQTB[5847].INT>=0 THEN FIRSTINDENT:=EQTB[5847].INT ELSE FIRSTINDENT:=
  4003  0;SECONDWIDTH:=EQTB[5833].INT;SECONDINDENT:=0;
  4004  END ELSE BEGIN FIRSTWIDTH:=EQTB[5833].INT;FIRSTINDENT:=0;
  4005  SECONDWIDTH:=EQTB[5833].INT-ABS(EQTB[5847].INT);
  4006  IF EQTB[5847].INT>=0 THEN SECONDINDENT:=EQTB[5847].INT ELSE SECONDINDENT
  4007  :=0;END;
  4008  END{:849}ELSE BEGIN LASTSPECIALLINE:=MEM[EQTB[3412].HH.RH].HH.LH-1;
  4009  SECONDWIDTH:=MEM[EQTB[3412].HH.RH+2*(LASTSPECIALLINE+1)].INT;
  4010  SECONDINDENT:=MEM[EQTB[3412].HH.RH+2*LASTSPECIALLINE+1].INT;END;
  4011  IF EQTB[5282].INT=0 THEN EASYLINE:=LASTSPECIALLINE ELSE EASYLINE:=65535
  4012  {:848};{863:}THRESHOLD:=EQTB[5263].INT;
  4013  IF THRESHOLD>=0 THEN BEGIN{IF EQTB[5295].INT>0 THEN BEGIN
  4014  BEGINDIAGNOSTIC;PRINTNL(933);END;}SECONDPASS:=FALSE;FINALPASS:=FALSE;
  4015  END ELSE BEGIN THRESHOLD:=EQTB[5264].INT;SECONDPASS:=TRUE;
  4016  FINALPASS:=(EQTB[5850].INT<=0);
  4017  {IF EQTB[5295].INT>0 THEN BEGINDIAGNOSTIC;}END;
  4018  WHILE TRUE DO BEGIN IF THRESHOLD>10000 THEN THRESHOLD:=10000;
  4019  IF SECONDPASS THEN{891:}BEGIN IF TRIENOTREADY THEN INITTRIE;
  4020  CURLANG:=INITCURLANG;LHYF:=INITLHYF;RHYF:=INITRHYF;END{:891};
  4021  {864:}Q:=GETNODE(3);MEM[Q].HH.B0:=0;MEM[Q].HH.B1:=2;MEM[Q].HH.RH:=29993;
  4022  MEM[Q+1].HH.RH:=0;MEM[Q+1].HH.LH:=CURLIST.PGFIELD+1;MEM[Q+2].INT:=0;
  4023  MEM[29993].HH.RH:=Q;ACTIVEWIDTH[1]:=BACKGROUND[1];
  4024  ACTIVEWIDTH[2]:=BACKGROUND[2];ACTIVEWIDTH[3]:=BACKGROUND[3];
  4025  ACTIVEWIDTH[4]:=BACKGROUND[4];ACTIVEWIDTH[5]:=BACKGROUND[5];
  4026  ACTIVEWIDTH[6]:=BACKGROUND[6];PASSIVE:=0;PRINTEDNODE:=29997;
  4027  PASSNUMBER:=0;FONTINSHORTDISPLAY:=0{:864};CURP:=MEM[29997].HH.RH;
  4028  AUTOBREAKING:=TRUE;PREVP:=CURP;
  4029  WHILE(CURP<>0)AND(MEM[29993].HH.RH<>29993)DO{866:}BEGIN IF(CURP>=
  4030  HIMEMMIN)THEN{867:}BEGIN PREVP:=CURP;REPEAT F:=MEM[CURP].HH.B0;
  4031  ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F
  4032  ]+MEM[CURP].HH.B1].QQQQ.B0].INT;CURP:=MEM[CURP].HH.RH;
  4033  UNTIL NOT(CURP>=HIMEMMIN);END{:867};
  4034  CASE MEM[CURP].HH.B0 OF 0,1,2:ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[CURP+1]
  4035  .INT;
  4036  8:{1362:}IF MEM[CURP].HH.B1=4 THEN BEGIN CURLANG:=MEM[CURP+1].HH.RH;
  4037  LHYF:=MEM[CURP+1].HH.B0;RHYF:=MEM[CURP+1].HH.B1;END{:1362};
  4038  10:BEGIN{868:}IF AUTOBREAKING THEN BEGIN IF(PREVP>=HIMEMMIN)THEN
  4039  TRYBREAK(0,0)ELSE IF(MEM[PREVP].HH.B0<9)THEN TRYBREAK(0,0)ELSE IF(MEM[
  4040  PREVP].HH.B0=11)AND(MEM[PREVP].HH.B1<>1)THEN TRYBREAK(0,0);END;
  4041  IF(MEM[MEM[CURP+1].HH.LH].HH.B1<>0)AND(MEM[MEM[CURP+1].HH.LH+3].INT<>0)
  4042  THEN BEGIN MEM[CURP+1].HH.LH:=FINITESHRINK(MEM[CURP+1].HH.LH);END;
  4043  Q:=MEM[CURP+1].HH.LH;ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[Q+1].INT;
  4044  ACTIVEWIDTH[2+MEM[Q].HH.B0]:=ACTIVEWIDTH[2+MEM[Q].HH.B0]+MEM[Q+2].INT;
  4045  ACTIVEWIDTH[6]:=ACTIVEWIDTH[6]+MEM[Q+3].INT{:868};
  4046  IF SECONDPASS AND AUTOBREAKING THEN{894:}BEGIN PREVS:=CURP;
  4047  S:=MEM[PREVS].HH.RH;
  4048  IF S<>0 THEN BEGIN{896:}WHILE TRUE DO BEGIN IF(S>=HIMEMMIN)THEN BEGIN C
  4049  :=MEM[S].HH.B1-0;HF:=MEM[S].HH.B0;
  4050  END ELSE IF MEM[S].HH.B0=6 THEN IF MEM[S+1].HH.RH=0 THEN GOTO 22 ELSE
  4051  BEGIN Q:=MEM[S+1].HH.RH;C:=MEM[Q].HH.B1-0;HF:=MEM[Q].HH.B0;
  4052  END ELSE IF(MEM[S].HH.B0=11)AND(MEM[S].HH.B1=0)THEN GOTO 22 ELSE IF MEM[
  4053  S].HH.B0=8 THEN BEGIN{1363:}IF MEM[S].HH.B1=4 THEN BEGIN CURLANG:=MEM[S
  4054  +1].HH.RH;LHYF:=MEM[S+1].HH.B0;RHYF:=MEM[S+1].HH.B1;END{:1363};GOTO 22;
  4055  END ELSE GOTO 31;
  4056  IF EQTB[4239+C].HH.RH<>0 THEN IF(EQTB[4239+C].HH.RH=C)OR(EQTB[5301].INT>
  4057  0)THEN GOTO 32 ELSE GOTO 31;22:PREVS:=S;S:=MEM[PREVS].HH.RH;END;
  4058  32:HYFCHAR:=HYPHENCHAR[HF];IF HYFCHAR<0 THEN GOTO 31;
  4059  IF HYFCHAR>255 THEN GOTO 31;HA:=PREVS{:896};
  4060  IF LHYF+RHYF>63 THEN GOTO 31;{897:}HN:=0;
  4061  WHILE TRUE DO BEGIN IF(S>=HIMEMMIN)THEN BEGIN IF MEM[S].HH.B0<>HF THEN
  4062  GOTO 33;HYFBCHAR:=MEM[S].HH.B1;C:=HYFBCHAR-0;
  4063  IF EQTB[4239+C].HH.RH=0 THEN GOTO 33;IF HN=63 THEN GOTO 33;HB:=S;
  4064  HN:=HN+1;HU[HN]:=C;HC[HN]:=EQTB[4239+C].HH.RH;HYFBCHAR:=256;
  4065  END ELSE IF MEM[S].HH.B0=6 THEN{898:}BEGIN IF MEM[S+1].HH.B0<>HF THEN
  4066  GOTO 33;J:=HN;Q:=MEM[S+1].HH.RH;IF Q>0 THEN HYFBCHAR:=MEM[Q].HH.B1;
  4067  WHILE Q>0 DO BEGIN C:=MEM[Q].HH.B1-0;
  4068  IF EQTB[4239+C].HH.RH=0 THEN GOTO 33;IF J=63 THEN GOTO 33;J:=J+1;
  4069  HU[J]:=C;HC[J]:=EQTB[4239+C].HH.RH;Q:=MEM[Q].HH.RH;END;HB:=S;HN:=J;
  4070  IF ODD(MEM[S].HH.B1)THEN HYFBCHAR:=FONTBCHAR[HF]ELSE HYFBCHAR:=256;
  4071  END{:898}ELSE IF(MEM[S].HH.B0=11)AND(MEM[S].HH.B1=0)THEN BEGIN HB:=S;
  4072  HYFBCHAR:=FONTBCHAR[HF];END ELSE GOTO 33;S:=MEM[S].HH.RH;END;33:{:897};
  4073  {899:}IF HN<LHYF+RHYF THEN GOTO 31;
  4074  WHILE TRUE DO BEGIN IF NOT((S>=HIMEMMIN))THEN CASE MEM[S].HH.B0 OF 6:;
  4075  11:IF MEM[S].HH.B1<>0 THEN GOTO 34;8,10,12,3,5,4:GOTO 34;
  4076  ELSE GOTO 31 END;S:=MEM[S].HH.RH;END;34:{:899};HYPHENATE;END;
  4077  31:END{:894};END;
  4078  11:IF MEM[CURP].HH.B1=1 THEN BEGIN IF NOT(MEM[CURP].HH.RH>=HIMEMMIN)AND
  4079  AUTOBREAKING THEN IF MEM[MEM[CURP].HH.RH].HH.B0=10 THEN TRYBREAK(0,0);
  4080  ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[CURP+1].INT;
  4081  END ELSE ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[CURP+1].INT;
  4082  6:BEGIN F:=MEM[CURP+1].HH.B0;
  4083  ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F
  4084  ]+MEM[CURP+1].HH.B1].QQQQ.B0].INT;END;
  4085  7:{869:}BEGIN S:=MEM[CURP+1].HH.LH;DISCWIDTH:=0;
  4086  IF S=0 THEN TRYBREAK(EQTB[5267].INT,1)ELSE BEGIN REPEAT{870:}IF(S>=
  4087  HIMEMMIN)THEN BEGIN F:=MEM[S].HH.B0;
  4088  DISCWIDTH:=DISCWIDTH+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[S].
  4089  HH.B1].QQQQ.B0].INT;
  4090  END ELSE CASE MEM[S].HH.B0 OF 6:BEGIN F:=MEM[S+1].HH.B0;
  4091  DISCWIDTH:=DISCWIDTH+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[S+1]
  4092  .HH.B1].QQQQ.B0].INT;END;0,1,2,11:DISCWIDTH:=DISCWIDTH+MEM[S+1].INT;
  4093  ELSE CONFUSION(937)END{:870};S:=MEM[S].HH.RH;UNTIL S=0;
  4094  ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+DISCWIDTH;TRYBREAK(EQTB[5266].INT,1);
  4095  ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]-DISCWIDTH;END;R:=MEM[CURP].HH.B1;
  4096  S:=MEM[CURP].HH.RH;
  4097  WHILE R>0 DO BEGIN{871:}IF(S>=HIMEMMIN)THEN BEGIN F:=MEM[S].HH.B0;
  4098  ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F
  4099  ]+MEM[S].HH.B1].QQQQ.B0].INT;
  4100  END ELSE CASE MEM[S].HH.B0 OF 6:BEGIN F:=MEM[S+1].HH.B0;
  4101  ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F
  4102  ]+MEM[S+1].HH.B1].QQQQ.B0].INT;END;
  4103  0,1,2,11:ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[S+1].INT;
  4104  ELSE CONFUSION(938)END{:871};R:=R-1;S:=MEM[S].HH.RH;END;PREVP:=CURP;
  4105  CURP:=S;GOTO 35;END{:869};9:BEGIN AUTOBREAKING:=(MEM[CURP].HH.B1=1);
  4106  BEGIN IF NOT(MEM[CURP].HH.RH>=HIMEMMIN)AND AUTOBREAKING THEN IF MEM[MEM[
  4107  CURP].HH.RH].HH.B0=10 THEN TRYBREAK(0,0);
  4108  ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[CURP+1].INT;END;END;
  4109  12:TRYBREAK(MEM[CURP+1].INT,0);4,3,5:;ELSE CONFUSION(936)END;
  4110  PREVP:=CURP;CURP:=MEM[CURP].HH.RH;35:END{:866};
  4111  IF CURP=0 THEN{873:}BEGIN TRYBREAK(-10000,1);
  4112  IF MEM[29993].HH.RH<>29993 THEN BEGIN{874:}R:=MEM[29993].HH.RH;
  4113  FEWESTDEMERITS:=1073741823;
  4114  REPEAT IF MEM[R].HH.B0<>2 THEN IF MEM[R+2].INT<FEWESTDEMERITS THEN BEGIN
  4115  FEWESTDEMERITS:=MEM[R+2].INT;BESTBET:=R;END;R:=MEM[R].HH.RH;
  4116  UNTIL R=29993;BESTLINE:=MEM[BESTBET+1].HH.LH{:874};
  4117  IF EQTB[5282].INT=0 THEN GOTO 30;{875:}BEGIN R:=MEM[29993].HH.RH;
  4118  ACTUALLOOSENESS:=0;
  4119  REPEAT IF MEM[R].HH.B0<>2 THEN BEGIN LINEDIFF:=MEM[R+1].HH.LH-BESTLINE;
  4120  IF((LINEDIFF<ACTUALLOOSENESS)AND(EQTB[5282].INT<=LINEDIFF))OR((LINEDIFF>
  4121  ACTUALLOOSENESS)AND(EQTB[5282].INT>=LINEDIFF))THEN BEGIN BESTBET:=R;
  4122  ACTUALLOOSENESS:=LINEDIFF;FEWESTDEMERITS:=MEM[R+2].INT;
  4123  END ELSE IF(LINEDIFF=ACTUALLOOSENESS)AND(MEM[R+2].INT<FEWESTDEMERITS)
  4124  THEN BEGIN BESTBET:=R;FEWESTDEMERITS:=MEM[R+2].INT;END;END;
  4125  R:=MEM[R].HH.RH;UNTIL R=29993;BESTLINE:=MEM[BESTBET+1].HH.LH;END{:875};
  4126  IF(ACTUALLOOSENESS=EQTB[5282].INT)OR FINALPASS THEN GOTO 30;END;
  4127  END{:873};{865:}Q:=MEM[29993].HH.RH;
  4128  WHILE Q<>29993 DO BEGIN CURP:=MEM[Q].HH.RH;
  4129  IF MEM[Q].HH.B0=2 THEN FREENODE(Q,7)ELSE FREENODE(Q,3);Q:=CURP;END;
  4130  Q:=PASSIVE;WHILE Q<>0 DO BEGIN CURP:=MEM[Q].HH.RH;FREENODE(Q,2);Q:=CURP;
  4131  END{:865};
  4132  IF NOT SECONDPASS THEN BEGIN{IF EQTB[5295].INT>0 THEN PRINTNL(934);}
  4133  THRESHOLD:=EQTB[5264].INT;SECONDPASS:=TRUE;
  4134  FINALPASS:=(EQTB[5850].INT<=0);
  4135  END ELSE BEGIN{IF EQTB[5295].INT>0 THEN PRINTNL(935);}
  4136  BACKGROUND[2]:=BACKGROUND[2]+EQTB[5850].INT;FINALPASS:=TRUE;END;END;
  4137  30:{IF EQTB[5295].INT>0 THEN BEGIN ENDDIAGNOSTIC(TRUE);
  4138  NORMALIZESELECTOR;END;}{:863};
  4139  {876:}POSTLINEBREAK(FINALWIDOWPENALTY){:876};{865:}Q:=MEM[29993].HH.RH;
  4140  WHILE Q<>29993 DO BEGIN CURP:=MEM[Q].HH.RH;
  4141  IF MEM[Q].HH.B0=2 THEN FREENODE(Q,7)ELSE FREENODE(Q,3);Q:=CURP;END;
  4142  Q:=PASSIVE;WHILE Q<>0 DO BEGIN CURP:=MEM[Q].HH.RH;FREENODE(Q,2);Q:=CURP;
  4143  END{:865};PACKBEGINLINE:=0;END;{:815}{934:}PROCEDURE NEWHYPHEXCEPTIONS;
  4144  LABEL 21,10,40,45;VAR N:0..64;J:0..64;H:HYPHPOINTER;K:STRNUMBER;
  4145  P:HALFWORD;Q:HALFWORD;S,T:STRNUMBER;U,V:POOLPOINTER;BEGIN SCANLEFTBRACE;
  4146  IF EQTB[5313].INT<=0 THEN CURLANG:=0 ELSE IF EQTB[5313].INT>255 THEN
  4147  CURLANG:=0 ELSE CURLANG:=EQTB[5313].INT;{935:}N:=0;P:=0;
  4148  WHILE TRUE DO BEGIN GETXTOKEN;
  4149  21:CASE CURCMD OF 11,12,68:{937:}IF CURCHR=45 THEN{938:}BEGIN IF N<63
  4150  THEN BEGIN Q:=GETAVAIL;MEM[Q].HH.RH:=P;MEM[Q].HH.LH:=N;P:=Q;END;
  4151  END{:938}ELSE BEGIN IF EQTB[4239+CURCHR].HH.RH=0 THEN BEGIN BEGIN IF
  4152  INTERACTION=3 THEN;PRINTNL(262);PRINT(945);END;BEGIN HELPPTR:=2;
  4153  HELPLINE[1]:=946;HELPLINE[0]:=947;END;ERROR;
  4154  END ELSE IF N<63 THEN BEGIN N:=N+1;HC[N]:=EQTB[4239+CURCHR].HH.RH;END;
  4155  END{:937};16:BEGIN SCANCHARNUM;CURCHR:=CURVAL;CURCMD:=68;GOTO 21;END;
  4156  10,2:BEGIN IF N>1 THEN{939:}BEGIN N:=N+1;HC[N]:=CURLANG;
  4157  BEGIN IF POOLPTR+N>POOLSIZE THEN OVERFLOW(257,POOLSIZE-INITPOOLPTR);END;
  4158  H:=0;FOR J:=1 TO N DO BEGIN H:=(H+H+HC[J])MOD 307;
  4159  BEGIN STRPOOL[POOLPTR]:=HC[J];POOLPTR:=POOLPTR+1;END;END;S:=MAKESTRING;
  4160  {940:}IF HYPHCOUNT=307 THEN OVERFLOW(948,307);HYPHCOUNT:=HYPHCOUNT+1;
  4161  WHILE HYPHWORD[H]<>0 DO BEGIN{941:}K:=HYPHWORD[H];
  4162  IF(STRSTART[K+1]-STRSTART[K])<(STRSTART[S+1]-STRSTART[S])THEN GOTO 40;
  4163  IF(STRSTART[K+1]-STRSTART[K])>(STRSTART[S+1]-STRSTART[S])THEN GOTO 45;
  4164  U:=STRSTART[K];V:=STRSTART[S];
  4165  REPEAT IF STRPOOL[U]<STRPOOL[V]THEN GOTO 40;
  4166  IF STRPOOL[U]>STRPOOL[V]THEN GOTO 45;U:=U+1;V:=V+1;
  4167  UNTIL U=STRSTART[K+1];40:Q:=HYPHLIST[H];HYPHLIST[H]:=P;P:=Q;
  4168  T:=HYPHWORD[H];HYPHWORD[H]:=S;S:=T;45:{:941};
  4169  IF H>0 THEN H:=H-1 ELSE H:=307;END;HYPHWORD[H]:=S;HYPHLIST[H]:=P{:940};
  4170  END{:939};IF CURCMD=2 THEN GOTO 10;N:=0;P:=0;END;
  4171  ELSE{936:}BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(680);END;
  4172  PRINTESC(941);PRINT(942);BEGIN HELPPTR:=2;HELPLINE[1]:=943;
  4173  HELPLINE[0]:=944;END;ERROR;END{:936}END;END{:935};10:END;
  4174  {:934}{968:}FUNCTION PRUNEPAGETOP(P:HALFWORD):HALFWORD;
  4175  VAR PREVP:HALFWORD;Q:HALFWORD;BEGIN PREVP:=29997;MEM[29997].HH.RH:=P;
  4176  WHILE P<>0 DO CASE MEM[P].HH.B0 OF 0,1,2:{969:}BEGIN Q:=NEWSKIPPARAM(10)
  4177  ;MEM[PREVP].HH.RH:=Q;MEM[Q].HH.RH:=P;
  4178  IF MEM[TEMPPTR+1].INT>MEM[P+3].INT THEN MEM[TEMPPTR+1].INT:=MEM[TEMPPTR
  4179  +1].INT-MEM[P+3].INT ELSE MEM[TEMPPTR+1].INT:=0;P:=0;END{:969};
  4180  8,4,3:BEGIN PREVP:=P;P:=MEM[PREVP].HH.RH;END;10,11,12:BEGIN Q:=P;
  4181  P:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;MEM[PREVP].HH.RH:=P;FLUSHNODELIST(Q);
  4182  END;ELSE CONFUSION(959)END;PRUNEPAGETOP:=MEM[29997].HH.RH;END;
  4183  {:968}{970:}FUNCTION VERTBREAK(P:HALFWORD;H,D:SCALED):HALFWORD;
  4184  LABEL 30,45,90;VAR PREVP:HALFWORD;Q,R:HALFWORD;PI:INTEGER;B:INTEGER;
  4185  LEASTCOST:INTEGER;BESTPLACE:HALFWORD;PREVDP:SCALED;T:SMALLNUMBER;
  4186  BEGIN PREVP:=P;LEASTCOST:=1073741823;ACTIVEWIDTH[1]:=0;
  4187  ACTIVEWIDTH[2]:=0;ACTIVEWIDTH[3]:=0;ACTIVEWIDTH[4]:=0;ACTIVEWIDTH[5]:=0;
  4188  ACTIVEWIDTH[6]:=0;PREVDP:=0;
  4189  WHILE TRUE DO BEGIN{972:}IF P=0 THEN PI:=-10000 ELSE{973:}CASE MEM[P].HH
  4190  .B0 OF 0,1,2:BEGIN ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+PREVDP+MEM[P+3].INT;
  4191  PREVDP:=MEM[P+2].INT;GOTO 45;END;8:{1365:}GOTO 45{:1365};
  4192  10:IF(MEM[PREVP].HH.B0<9)THEN PI:=0 ELSE GOTO 90;
  4193  11:BEGIN IF MEM[P].HH.RH=0 THEN T:=12 ELSE T:=MEM[MEM[P].HH.RH].HH.B0;
  4194  IF T=10 THEN PI:=0 ELSE GOTO 90;END;12:PI:=MEM[P+1].INT;4,3:GOTO 45;
  4195  ELSE CONFUSION(960)END{:973};
  4196  {974:}IF PI<10000 THEN BEGIN{975:}IF ACTIVEWIDTH[1]<H THEN IF(
  4197  ACTIVEWIDTH[3]<>0)OR(ACTIVEWIDTH[4]<>0)OR(ACTIVEWIDTH[5]<>0)THEN B:=0
  4198  ELSE B:=BADNESS(H-ACTIVEWIDTH[1],ACTIVEWIDTH[2])ELSE IF ACTIVEWIDTH[1]-H
  4199  >ACTIVEWIDTH[6]THEN B:=1073741823 ELSE B:=BADNESS(ACTIVEWIDTH[1]-H,
  4200  ACTIVEWIDTH[6]){:975};
  4201  IF B<1073741823 THEN IF PI<=-10000 THEN B:=PI ELSE IF B<10000 THEN B:=B+
  4202  PI ELSE B:=100000;IF B<=LEASTCOST THEN BEGIN BESTPLACE:=P;LEASTCOST:=B;
  4203  BESTHEIGHTPLUSDEPTH:=ACTIVEWIDTH[1]+PREVDP;END;
  4204  IF(B=1073741823)OR(PI<=-10000)THEN GOTO 30;END{:974};
  4205  IF(MEM[P].HH.B0<10)OR(MEM[P].HH.B0>11)THEN GOTO 45;
  4206  90:{976:}IF MEM[P].HH.B0=11 THEN Q:=P ELSE BEGIN Q:=MEM[P+1].HH.LH;
  4207  ACTIVEWIDTH[2+MEM[Q].HH.B0]:=ACTIVEWIDTH[2+MEM[Q].HH.B0]+MEM[Q+2].INT;
  4208  ACTIVEWIDTH[6]:=ACTIVEWIDTH[6]+MEM[Q+3].INT;
  4209  IF(MEM[Q].HH.B1<>0)AND(MEM[Q+3].INT<>0)THEN BEGIN BEGIN IF INTERACTION=3
  4210  THEN;PRINTNL(262);PRINT(961);END;BEGIN HELPPTR:=4;HELPLINE[3]:=962;
  4211  HELPLINE[2]:=963;HELPLINE[1]:=964;HELPLINE[0]:=922;END;ERROR;
  4212  R:=NEWSPEC(Q);MEM[R].HH.B1:=0;DELETEGLUEREF(Q);MEM[P+1].HH.LH:=R;Q:=R;
  4213  END;END;ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+PREVDP+MEM[Q+1].INT;
  4214  PREVDP:=0{:976};
  4215  45:IF PREVDP>D THEN BEGIN ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+PREVDP-D;
  4216  PREVDP:=D;END;{:972};PREVP:=P;P:=MEM[PREVP].HH.RH;END;
  4217  30:VERTBREAK:=BESTPLACE;END;{:970}{977:}FUNCTION VSPLIT(N:EIGHTBITS;
  4218  H:SCALED):HALFWORD;LABEL 10,30;VAR V:HALFWORD;P:HALFWORD;Q:HALFWORD;
  4219  BEGIN V:=EQTB[3678+N].HH.RH;
  4220  IF CURMARK[3]<>0 THEN BEGIN DELETETOKENREF(CURMARK[3]);CURMARK[3]:=0;
  4221  DELETETOKENREF(CURMARK[4]);CURMARK[4]:=0;END;
  4222  {978:}IF V=0 THEN BEGIN VSPLIT:=0;GOTO 10;END;
  4223  IF MEM[V].HH.B0<>1 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  4224  PRINT(338);END;PRINTESC(965);PRINT(966);PRINTESC(967);BEGIN HELPPTR:=2;
  4225  HELPLINE[1]:=968;HELPLINE[0]:=969;END;ERROR;VSPLIT:=0;GOTO 10;END{:978};
  4226  Q:=VERTBREAK(MEM[V+5].HH.RH,H,EQTB[5836].INT);{979:}P:=MEM[V+5].HH.RH;
  4227  IF P=Q THEN MEM[V+5].HH.RH:=0 ELSE WHILE TRUE DO BEGIN IF MEM[P].HH.B0=4
  4228  THEN IF CURMARK[3]=0 THEN BEGIN CURMARK[3]:=MEM[P+1].INT;
  4229  CURMARK[4]:=CURMARK[3];MEM[CURMARK[3]].HH.LH:=MEM[CURMARK[3]].HH.LH+2;
  4230  END ELSE BEGIN DELETETOKENREF(CURMARK[4]);CURMARK[4]:=MEM[P+1].INT;
  4231  MEM[CURMARK[4]].HH.LH:=MEM[CURMARK[4]].HH.LH+1;END;
  4232  IF MEM[P].HH.RH=Q THEN BEGIN MEM[P].HH.RH:=0;GOTO 30;END;
  4233  P:=MEM[P].HH.RH;END;30:{:979};Q:=PRUNEPAGETOP(Q);P:=MEM[V+5].HH.RH;
  4234  FREENODE(V,7);
  4235  IF Q=0 THEN EQTB[3678+N].HH.RH:=0 ELSE EQTB[3678+N].HH.RH:=VPACKAGE(Q,0,
  4236  1,1073741823);VSPLIT:=VPACKAGE(P,H,0,EQTB[5836].INT);10:END;
  4237  {:977}{985:}PROCEDURE PRINTTOTALS;BEGIN PRINTSCALED(PAGESOFAR[1]);
  4238  IF PAGESOFAR[2]<>0 THEN BEGIN PRINT(312);PRINTSCALED(PAGESOFAR[2]);
  4239  PRINT(338);END;IF PAGESOFAR[3]<>0 THEN BEGIN PRINT(312);
  4240  PRINTSCALED(PAGESOFAR[3]);PRINT(311);END;
  4241  IF PAGESOFAR[4]<>0 THEN BEGIN PRINT(312);PRINTSCALED(PAGESOFAR[4]);
  4242  PRINT(978);END;IF PAGESOFAR[5]<>0 THEN BEGIN PRINT(312);
  4243  PRINTSCALED(PAGESOFAR[5]);PRINT(979);END;
  4244  IF PAGESOFAR[6]<>0 THEN BEGIN PRINT(313);PRINTSCALED(PAGESOFAR[6]);END;
  4245  END;{:985}{987:}PROCEDURE FREEZEPAGESPECS(S:SMALLNUMBER);
  4246  BEGIN PAGECONTENTS:=S;PAGESOFAR[0]:=EQTB[5834].INT;
  4247  PAGEMAXDEPTH:=EQTB[5835].INT;PAGESOFAR[7]:=0;PAGESOFAR[1]:=0;
  4248  PAGESOFAR[2]:=0;PAGESOFAR[3]:=0;PAGESOFAR[4]:=0;PAGESOFAR[5]:=0;
  4249  PAGESOFAR[6]:=0;LEASTPAGECOST:=1073741823;
  4250  {IF EQTB[5296].INT>0 THEN BEGIN BEGINDIAGNOSTIC;PRINTNL(987);
  4251  PRINTSCALED(PAGESOFAR[0]);PRINT(988);PRINTSCALED(PAGEMAXDEPTH);
  4252  ENDDIAGNOSTIC(FALSE);END;}END;
  4253  {:987}{992:}PROCEDURE BOXERROR(N:EIGHTBITS);BEGIN ERROR;BEGINDIAGNOSTIC;
  4254  PRINTNL(836);SHOWBOX(EQTB[3678+N].HH.RH);ENDDIAGNOSTIC(TRUE);
  4255  FLUSHNODELIST(EQTB[3678+N].HH.RH);EQTB[3678+N].HH.RH:=0;END;
  4256  {:992}{993:}PROCEDURE ENSUREVBOX(N:EIGHTBITS);VAR P:HALFWORD;
  4257  BEGIN P:=EQTB[3678+N].HH.RH;
  4258  IF P<>0 THEN IF MEM[P].HH.B0=0 THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  4259  PRINTNL(262);PRINT(989);END;BEGIN HELPPTR:=3;HELPLINE[2]:=990;
  4260  HELPLINE[1]:=991;HELPLINE[0]:=992;END;BOXERROR(N);END;END;
  4261  {:993}{994:}{1012:}PROCEDURE FIREUP(C:HALFWORD);LABEL 10;
  4262  VAR P,Q,R,S:HALFWORD;PREVP:HALFWORD;N:0..255;WAIT:BOOLEAN;
  4263  SAVEVBADNESS:INTEGER;SAVEVFUZZ:SCALED;SAVESPLITTOPSKIP:HALFWORD;
  4264  BEGIN{1013:}IF MEM[BESTPAGEBREAK].HH.B0=12 THEN BEGIN GEQWORDDEFINE(5302
  4265  ,MEM[BESTPAGEBREAK+1].INT);MEM[BESTPAGEBREAK+1].INT:=10000;
  4266  END ELSE GEQWORDDEFINE(5302,10000){:1013};
  4267  IF CURMARK[2]<>0 THEN BEGIN IF CURMARK[0]<>0 THEN DELETETOKENREF(CURMARK
  4268  [0]);CURMARK[0]:=CURMARK[2];
  4269  MEM[CURMARK[0]].HH.LH:=MEM[CURMARK[0]].HH.LH+1;
  4270  DELETETOKENREF(CURMARK[1]);CURMARK[1]:=0;END;
  4271  {1014:}IF C=BESTPAGEBREAK THEN BESTPAGEBREAK:=0;
  4272  {1015:}IF EQTB[3933].HH.RH<>0 THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  4273  PRINTNL(262);PRINT(338);END;PRINTESC(409);PRINT(1003);BEGIN HELPPTR:=2;
  4274  HELPLINE[1]:=1004;HELPLINE[0]:=992;END;BOXERROR(255);END{:1015};
  4275  INSERTPENALTIES:=0;SAVESPLITTOPSKIP:=EQTB[2892].HH.RH;
  4276  IF EQTB[5316].INT<=0 THEN{1018:}BEGIN R:=MEM[30000].HH.RH;
  4277  WHILE R<>30000 DO BEGIN IF MEM[R+2].HH.LH<>0 THEN BEGIN N:=MEM[R].HH.B1
  4278  -0;ENSUREVBOX(N);
  4279  IF EQTB[3678+N].HH.RH=0 THEN EQTB[3678+N].HH.RH:=NEWNULLBOX;
  4280  P:=EQTB[3678+N].HH.RH+5;WHILE MEM[P].HH.RH<>0 DO P:=MEM[P].HH.RH;
  4281  MEM[R+2].HH.RH:=P;END;R:=MEM[R].HH.RH;END;END{:1018};Q:=29996;
  4282  MEM[Q].HH.RH:=0;PREVP:=29998;P:=MEM[PREVP].HH.RH;
  4283  WHILE P<>BESTPAGEBREAK DO BEGIN IF MEM[P].HH.B0=3 THEN BEGIN IF EQTB[
  4284  5316].INT<=0 THEN{1020:}BEGIN R:=MEM[30000].HH.RH;
  4285  WHILE MEM[R].HH.B1<>MEM[P].HH.B1 DO R:=MEM[R].HH.RH;
  4286  IF MEM[R+2].HH.LH=0 THEN WAIT:=TRUE ELSE BEGIN WAIT:=FALSE;
  4287  S:=MEM[R+2].HH.RH;MEM[S].HH.RH:=MEM[P+4].HH.LH;
  4288  IF MEM[R+2].HH.LH=P THEN{1021:}BEGIN IF MEM[R].HH.B0=1 THEN IF(MEM[R+1].
  4289  HH.LH=P)AND(MEM[R+1].HH.RH<>0)THEN BEGIN WHILE MEM[S].HH.RH<>MEM[R+1].HH
  4290  .RH DO S:=MEM[S].HH.RH;MEM[S].HH.RH:=0;EQTB[2892].HH.RH:=MEM[P+4].HH.RH;
  4291  MEM[P+4].HH.LH:=PRUNEPAGETOP(MEM[R+1].HH.RH);
  4292  IF MEM[P+4].HH.LH<>0 THEN BEGIN TEMPPTR:=VPACKAGE(MEM[P+4].HH.LH,0,1,
  4293  1073741823);MEM[P+3].INT:=MEM[TEMPPTR+3].INT+MEM[TEMPPTR+2].INT;
  4294  FREENODE(TEMPPTR,7);WAIT:=TRUE;END;END;MEM[R+2].HH.LH:=0;
  4295  N:=MEM[R].HH.B1-0;TEMPPTR:=MEM[EQTB[3678+N].HH.RH+5].HH.RH;
  4296  FREENODE(EQTB[3678+N].HH.RH,7);
  4297  EQTB[3678+N].HH.RH:=VPACKAGE(TEMPPTR,0,1,1073741823);
  4298  END{:1021}ELSE BEGIN WHILE MEM[S].HH.RH<>0 DO S:=MEM[S].HH.RH;
  4299  MEM[R+2].HH.RH:=S;END;END;{1022:}MEM[PREVP].HH.RH:=MEM[P].HH.RH;
  4300  MEM[P].HH.RH:=0;IF WAIT THEN BEGIN MEM[Q].HH.RH:=P;Q:=P;
  4301  INSERTPENALTIES:=INSERTPENALTIES+1;
  4302  END ELSE BEGIN DELETEGLUEREF(MEM[P+4].HH.RH);FREENODE(P,5);END;
  4303  P:=PREVP{:1022};END{:1020};
  4304  END ELSE IF MEM[P].HH.B0=4 THEN{1016:}BEGIN IF CURMARK[1]=0 THEN BEGIN
  4305  CURMARK[1]:=MEM[P+1].INT;MEM[CURMARK[1]].HH.LH:=MEM[CURMARK[1]].HH.LH+1;
  4306  END;IF CURMARK[2]<>0 THEN DELETETOKENREF(CURMARK[2]);
  4307  CURMARK[2]:=MEM[P+1].INT;MEM[CURMARK[2]].HH.LH:=MEM[CURMARK[2]].HH.LH+1;
  4308  END{:1016};PREVP:=P;P:=MEM[PREVP].HH.RH;END;
  4309  EQTB[2892].HH.RH:=SAVESPLITTOPSKIP;
  4310  {1017:}IF P<>0 THEN BEGIN IF MEM[29999].HH.RH=0 THEN IF NESTPTR=0 THEN
  4311  CURLIST.TAILFIELD:=PAGETAIL ELSE NEST[0].TAILFIELD:=PAGETAIL;
  4312  MEM[PAGETAIL].HH.RH:=MEM[29999].HH.RH;MEM[29999].HH.RH:=P;
  4313  MEM[PREVP].HH.RH:=0;END;SAVEVBADNESS:=EQTB[5290].INT;
  4314  EQTB[5290].INT:=10000;SAVEVFUZZ:=EQTB[5839].INT;
  4315  EQTB[5839].INT:=1073741823;
  4316  EQTB[3933].HH.RH:=VPACKAGE(MEM[29998].HH.RH,BESTSIZE,0,PAGEMAXDEPTH);
  4317  EQTB[5290].INT:=SAVEVBADNESS;EQTB[5839].INT:=SAVEVFUZZ;
  4318  IF LASTGLUE<>65535 THEN DELETEGLUEREF(LASTGLUE);{991:}PAGECONTENTS:=0;
  4319  PAGETAIL:=29998;MEM[29998].HH.RH:=0;LASTGLUE:=65535;LASTPENALTY:=0;
  4320  LASTKERN:=0;PAGESOFAR[7]:=0;PAGEMAXDEPTH:=0{:991};
  4321  IF Q<>29996 THEN BEGIN MEM[29998].HH.RH:=MEM[29996].HH.RH;PAGETAIL:=Q;
  4322  END{:1017};{1019:}R:=MEM[30000].HH.RH;
  4323  WHILE R<>30000 DO BEGIN Q:=MEM[R].HH.RH;FREENODE(R,4);R:=Q;END;
  4324  MEM[30000].HH.RH:=30000{:1019}{:1014};
  4325  IF(CURMARK[0]<>0)AND(CURMARK[1]=0)THEN BEGIN CURMARK[1]:=CURMARK[0];
  4326  MEM[CURMARK[0]].HH.LH:=MEM[CURMARK[0]].HH.LH+1;END;
  4327  IF EQTB[3413].HH.RH<>0 THEN IF DEADCYCLES>=EQTB[5303].INT THEN{1024:}
  4328  BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(1005);END;
  4329  PRINTINT(DEADCYCLES);PRINT(1006);BEGIN HELPPTR:=3;HELPLINE[2]:=1007;
  4330  HELPLINE[1]:=1008;HELPLINE[0]:=1009;END;ERROR;
  4331  END{:1024}ELSE{1025:}BEGIN OUTPUTACTIVE:=TRUE;DEADCYCLES:=DEADCYCLES+1;
  4332  PUSHNEST;CURLIST.MODEFIELD:=-1;CURLIST.AUXFIELD.INT:=-65536000;
  4333  CURLIST.MLFIELD:=-LINE;BEGINTOKENLIST(EQTB[3413].HH.RH,6);
  4334  NEWSAVELEVEL(8);NORMALPARAGRAPH;SCANLEFTBRACE;GOTO 10;END{:1025};
  4335  {1023:}BEGIN IF MEM[29998].HH.RH<>0 THEN BEGIN IF MEM[29999].HH.RH=0
  4336  THEN IF NESTPTR=0 THEN CURLIST.TAILFIELD:=PAGETAIL ELSE NEST[0].
  4337  TAILFIELD:=PAGETAIL ELSE MEM[PAGETAIL].HH.RH:=MEM[29999].HH.RH;
  4338  MEM[29999].HH.RH:=MEM[29998].HH.RH;MEM[29998].HH.RH:=0;PAGETAIL:=29998;
  4339  END;SHIPOUT(EQTB[3933].HH.RH);EQTB[3933].HH.RH:=0;END{:1023};10:END;
  4340  {:1012}PROCEDURE BUILDPAGE;LABEL 10,30,31,22,80,90;VAR P:HALFWORD;
  4341  Q,R:HALFWORD;B,C:INTEGER;PI:INTEGER;N:0..255;DELTA,H,W:SCALED;
  4342  BEGIN IF(MEM[29999].HH.RH=0)OR OUTPUTACTIVE THEN GOTO 10;
  4343  REPEAT 22:P:=MEM[29999].HH.RH;
  4344  {996:}IF LASTGLUE<>65535 THEN DELETEGLUEREF(LASTGLUE);LASTPENALTY:=0;
  4345  LASTKERN:=0;IF MEM[P].HH.B0=10 THEN BEGIN LASTGLUE:=MEM[P+1].HH.LH;
  4346  MEM[LASTGLUE].HH.RH:=MEM[LASTGLUE].HH.RH+1;
  4347  END ELSE BEGIN LASTGLUE:=65535;
  4348  IF MEM[P].HH.B0=12 THEN LASTPENALTY:=MEM[P+1].INT ELSE IF MEM[P].HH.B0=
  4349  11 THEN LASTKERN:=MEM[P+1].INT;END{:996};
  4350  {997:}{1000:}CASE MEM[P].HH.B0 OF 0,1,2:IF PAGECONTENTS<2 THEN{1001:}
  4351  BEGIN IF PAGECONTENTS=0 THEN FREEZEPAGESPECS(2)ELSE PAGECONTENTS:=2;
  4352  Q:=NEWSKIPPARAM(9);
  4353  IF MEM[TEMPPTR+1].INT>MEM[P+3].INT THEN MEM[TEMPPTR+1].INT:=MEM[TEMPPTR
  4354  +1].INT-MEM[P+3].INT ELSE MEM[TEMPPTR+1].INT:=0;MEM[Q].HH.RH:=P;
  4355  MEM[29999].HH.RH:=Q;GOTO 22;
  4356  END{:1001}ELSE{1002:}BEGIN PAGESOFAR[1]:=PAGESOFAR[1]+PAGESOFAR[7]+MEM[P
  4357  +3].INT;PAGESOFAR[7]:=MEM[P+2].INT;GOTO 80;END{:1002};
  4358  8:{1364:}GOTO 80{:1364};
  4359  10:IF PAGECONTENTS<2 THEN GOTO 31 ELSE IF(MEM[PAGETAIL].HH.B0<9)THEN PI
  4360  :=0 ELSE GOTO 90;
  4361  11:IF PAGECONTENTS<2 THEN GOTO 31 ELSE IF MEM[P].HH.RH=0 THEN GOTO 10
  4362  ELSE IF MEM[MEM[P].HH.RH].HH.B0=10 THEN PI:=0 ELSE GOTO 90;
  4363  12:IF PAGECONTENTS<2 THEN GOTO 31 ELSE PI:=MEM[P+1].INT;4:GOTO 80;
  4364  3:{1008:}BEGIN IF PAGECONTENTS=0 THEN FREEZEPAGESPECS(1);
  4365  N:=MEM[P].HH.B1;R:=30000;
  4366  WHILE N>=MEM[MEM[R].HH.RH].HH.B1 DO R:=MEM[R].HH.RH;N:=N-0;
  4367  IF MEM[R].HH.B1<>N+0 THEN{1009:}BEGIN Q:=GETNODE(4);
  4368  MEM[Q].HH.RH:=MEM[R].HH.RH;MEM[R].HH.RH:=Q;R:=Q;MEM[R].HH.B1:=N+0;
  4369  MEM[R].HH.B0:=0;ENSUREVBOX(N);
  4370  IF EQTB[3678+N].HH.RH=0 THEN MEM[R+3].INT:=0 ELSE MEM[R+3].INT:=MEM[EQTB
  4371  [3678+N].HH.RH+3].INT+MEM[EQTB[3678+N].HH.RH+2].INT;MEM[R+2].HH.LH:=0;
  4372  Q:=EQTB[2900+N].HH.RH;
  4373  IF EQTB[5318+N].INT=1000 THEN H:=MEM[R+3].INT ELSE H:=XOVERN(MEM[R+3].
  4374  INT,1000)*EQTB[5318+N].INT;PAGESOFAR[0]:=PAGESOFAR[0]-H-MEM[Q+1].INT;
  4375  PAGESOFAR[2+MEM[Q].HH.B0]:=PAGESOFAR[2+MEM[Q].HH.B0]+MEM[Q+2].INT;
  4376  PAGESOFAR[6]:=PAGESOFAR[6]+MEM[Q+3].INT;
  4377  IF(MEM[Q].HH.B1<>0)AND(MEM[Q+3].INT<>0)THEN BEGIN BEGIN IF INTERACTION=3
  4378  THEN;PRINTNL(262);PRINT(998);END;PRINTESC(395);PRINTINT(N);
  4379  BEGIN HELPPTR:=3;HELPLINE[2]:=999;HELPLINE[1]:=1000;HELPLINE[0]:=922;
  4380  END;ERROR;END;END{:1009};
  4381  IF MEM[R].HH.B0=1 THEN INSERTPENALTIES:=INSERTPENALTIES+MEM[P+1].INT
  4382  ELSE BEGIN MEM[R+2].HH.RH:=P;
  4383  DELTA:=PAGESOFAR[0]-PAGESOFAR[1]-PAGESOFAR[7]+PAGESOFAR[6];
  4384  IF EQTB[5318+N].INT=1000 THEN H:=MEM[P+3].INT ELSE H:=XOVERN(MEM[P+3].
  4385  INT,1000)*EQTB[5318+N].INT;
  4386  IF((H<=0)OR(H<=DELTA))AND(MEM[P+3].INT+MEM[R+3].INT<=EQTB[5851+N].INT)
  4387  THEN BEGIN PAGESOFAR[0]:=PAGESOFAR[0]-H;
  4388  MEM[R+3].INT:=MEM[R+3].INT+MEM[P+3].INT;
  4389  END ELSE{1010:}BEGIN IF EQTB[5318+N].INT<=0 THEN W:=1073741823 ELSE
  4390  BEGIN W:=PAGESOFAR[0]-PAGESOFAR[1]-PAGESOFAR[7];
  4391  IF EQTB[5318+N].INT<>1000 THEN W:=XOVERN(W,EQTB[5318+N].INT)*1000;END;
  4392  IF W>EQTB[5851+N].INT-MEM[R+3].INT THEN W:=EQTB[5851+N].INT-MEM[R+3].INT
  4393  ;Q:=VERTBREAK(MEM[P+4].HH.LH,W,MEM[P+2].INT);
  4394  MEM[R+3].INT:=MEM[R+3].INT+BESTHEIGHTPLUSDEPTH;
  4395  {IF EQTB[5296].INT>0 THEN[1011:]BEGIN BEGINDIAGNOSTIC;PRINTNL(1001);
  4396  PRINTINT(N);PRINT(1002);PRINTSCALED(W);PRINTCHAR(44);
  4397  PRINTSCALED(BESTHEIGHTPLUSDEPTH);PRINT(931);
  4398  IF Q=0 THEN PRINTINT(-10000)ELSE IF MEM[Q].HH.B0=12 THEN PRINTINT(MEM[Q
  4399  +1].INT)ELSE PRINTCHAR(48);ENDDIAGNOSTIC(FALSE);END[:1011];}
  4400  IF EQTB[5318+N].INT<>1000 THEN BESTHEIGHTPLUSDEPTH:=XOVERN(
  4401  BESTHEIGHTPLUSDEPTH,1000)*EQTB[5318+N].INT;
  4402  PAGESOFAR[0]:=PAGESOFAR[0]-BESTHEIGHTPLUSDEPTH;MEM[R].HH.B0:=1;
  4403  MEM[R+1].HH.RH:=Q;MEM[R+1].HH.LH:=P;
  4404  IF Q=0 THEN INSERTPENALTIES:=INSERTPENALTIES-10000 ELSE IF MEM[Q].HH.B0=
  4405  12 THEN INSERTPENALTIES:=INSERTPENALTIES+MEM[Q+1].INT;END{:1010};END;
  4406  GOTO 80;END{:1008};ELSE CONFUSION(993)END{:1000};
  4407  {1005:}IF PI<10000 THEN BEGIN{1007:}IF PAGESOFAR[1]<PAGESOFAR[0]THEN IF(
  4408  PAGESOFAR[3]<>0)OR(PAGESOFAR[4]<>0)OR(PAGESOFAR[5]<>0)THEN B:=0 ELSE B:=
  4409  BADNESS(PAGESOFAR[0]-PAGESOFAR[1],PAGESOFAR[2])ELSE IF PAGESOFAR[1]-
  4410  PAGESOFAR[0]>PAGESOFAR[6]THEN B:=1073741823 ELSE B:=BADNESS(PAGESOFAR[1]
  4411  -PAGESOFAR[0],PAGESOFAR[6]){:1007};
  4412  IF B<1073741823 THEN IF PI<=-10000 THEN C:=PI ELSE IF B<10000 THEN C:=B+
  4413  PI+INSERTPENALTIES ELSE C:=100000 ELSE C:=B;
  4414  IF INSERTPENALTIES>=10000 THEN C:=1073741823;
  4415  {IF EQTB[5296].INT>0 THEN[1006:]BEGIN BEGINDIAGNOSTIC;PRINTNL(37);
  4416  PRINT(927);PRINTTOTALS;PRINT(996);PRINTSCALED(PAGESOFAR[0]);PRINT(930);
  4417  IF B=1073741823 THEN PRINTCHAR(42)ELSE PRINTINT(B);PRINT(931);
  4418  PRINTINT(PI);PRINT(997);
  4419  IF C=1073741823 THEN PRINTCHAR(42)ELSE PRINTINT(C);
  4420  IF C<=LEASTPAGECOST THEN PRINTCHAR(35);ENDDIAGNOSTIC(FALSE);END[:1006];}
  4421  IF C<=LEASTPAGECOST THEN BEGIN BESTPAGEBREAK:=P;BESTSIZE:=PAGESOFAR[0];
  4422  LEASTPAGECOST:=C;R:=MEM[30000].HH.RH;
  4423  WHILE R<>30000 DO BEGIN MEM[R+2].HH.LH:=MEM[R+2].HH.RH;R:=MEM[R].HH.RH;
  4424  END;END;IF(C=1073741823)OR(PI<=-10000)THEN BEGIN FIREUP(P);
  4425  IF OUTPUTACTIVE THEN GOTO 10;GOTO 30;END;END{:1005};
  4426  IF(MEM[P].HH.B0<10)OR(MEM[P].HH.B0>11)THEN GOTO 80;
  4427  90:{1004:}IF MEM[P].HH.B0=11 THEN Q:=P ELSE BEGIN Q:=MEM[P+1].HH.LH;
  4428  PAGESOFAR[2+MEM[Q].HH.B0]:=PAGESOFAR[2+MEM[Q].HH.B0]+MEM[Q+2].INT;
  4429  PAGESOFAR[6]:=PAGESOFAR[6]+MEM[Q+3].INT;
  4430  IF(MEM[Q].HH.B1<>0)AND(MEM[Q+3].INT<>0)THEN BEGIN BEGIN IF INTERACTION=3
  4431  THEN;PRINTNL(262);PRINT(994);END;BEGIN HELPPTR:=4;HELPLINE[3]:=995;
  4432  HELPLINE[2]:=963;HELPLINE[1]:=964;HELPLINE[0]:=922;END;ERROR;
  4433  R:=NEWSPEC(Q);MEM[R].HH.B1:=0;DELETEGLUEREF(Q);MEM[P+1].HH.LH:=R;Q:=R;
  4434  END;END;PAGESOFAR[1]:=PAGESOFAR[1]+PAGESOFAR[7]+MEM[Q+1].INT;
  4435  PAGESOFAR[7]:=0{:1004};
  4436  80:{1003:}IF PAGESOFAR[7]>PAGEMAXDEPTH THEN BEGIN PAGESOFAR[1]:=
  4437  PAGESOFAR[1]+PAGESOFAR[7]-PAGEMAXDEPTH;PAGESOFAR[7]:=PAGEMAXDEPTH;END;
  4438  {:1003};{998:}MEM[PAGETAIL].HH.RH:=P;PAGETAIL:=P;
  4439  MEM[29999].HH.RH:=MEM[P].HH.RH;MEM[P].HH.RH:=0;GOTO 30{:998};
  4440  31:{999:}MEM[29999].HH.RH:=MEM[P].HH.RH;MEM[P].HH.RH:=0;
  4441  FLUSHNODELIST(P){:999};30:{:997};UNTIL MEM[29999].HH.RH=0;
  4442  {995:}IF NESTPTR=0 THEN CURLIST.TAILFIELD:=29999 ELSE NEST[0].TAILFIELD
  4443  :=29999{:995};10:END;{:994}{1030:}{1043:}PROCEDURE APPSPACE;
  4444  VAR Q:HALFWORD;
  4445  BEGIN IF(CURLIST.AUXFIELD.HH.LH>=2000)AND(EQTB[2895].HH.RH<>0)THEN Q:=
  4446  NEWPARAMGLUE(13)ELSE BEGIN IF EQTB[2894].HH.RH<>0 THEN MAINP:=EQTB[2894]
  4447  .HH.RH ELSE{1042:}BEGIN MAINP:=FONTGLUE[EQTB[3934].HH.RH];
  4448  IF MAINP=0 THEN BEGIN MAINP:=NEWSPEC(0);
  4449  MAINK:=PARAMBASE[EQTB[3934].HH.RH]+2;
  4450  MEM[MAINP+1].INT:=FONTINFO[MAINK].INT;
  4451  MEM[MAINP+2].INT:=FONTINFO[MAINK+1].INT;
  4452  MEM[MAINP+3].INT:=FONTINFO[MAINK+2].INT;
  4453  FONTGLUE[EQTB[3934].HH.RH]:=MAINP;END;END{:1042};MAINP:=NEWSPEC(MAINP);
  4454  {1044:}IF CURLIST.AUXFIELD.HH.LH>=2000 THEN MEM[MAINP+1].INT:=MEM[MAINP
  4455  +1].INT+FONTINFO[7+PARAMBASE[EQTB[3934].HH.RH]].INT;
  4456  MEM[MAINP+2].INT:=XNOVERD(MEM[MAINP+2].INT,CURLIST.AUXFIELD.HH.LH,1000);
  4457  MEM[MAINP+3].INT:=XNOVERD(MEM[MAINP+3].INT,1000,CURLIST.AUXFIELD.HH.LH)
  4458  {:1044};Q:=NEWGLUE(MAINP);MEM[MAINP].HH.RH:=0;END;
  4459  MEM[CURLIST.TAILFIELD].HH.RH:=Q;CURLIST.TAILFIELD:=Q;END;
  4460  {:1043}{1047:}PROCEDURE INSERTDOLLARSIGN;BEGIN BACKINPUT;CURTOK:=804;
  4461  BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(1017);END;
  4462  BEGIN HELPPTR:=2;HELPLINE[1]:=1018;HELPLINE[0]:=1019;END;INSERROR;END;
  4463  {:1047}{1049:}PROCEDURE YOUCANT;BEGIN BEGIN IF INTERACTION=3 THEN;
  4464  PRINTNL(262);PRINT(685);END;PRINTCMDCHR(CURCMD,CURCHR);PRINT(1020);
  4465  PRINTMODE(CURLIST.MODEFIELD);END;
  4466  {:1049}{1050:}PROCEDURE REPORTILLEGALCASE;BEGIN YOUCANT;
  4467  BEGIN HELPPTR:=4;HELPLINE[3]:=1021;HELPLINE[2]:=1022;HELPLINE[1]:=1023;
  4468  HELPLINE[0]:=1024;END;ERROR;END;
  4469  {:1050}{1051:}FUNCTION PRIVILEGED:BOOLEAN;
  4470  BEGIN IF CURLIST.MODEFIELD>0 THEN PRIVILEGED:=TRUE ELSE BEGIN
  4471  REPORTILLEGALCASE;PRIVILEGED:=FALSE;END;END;
  4472  {:1051}{1054:}FUNCTION ITSALLOVER:BOOLEAN;LABEL 10;
  4473  BEGIN IF PRIVILEGED THEN BEGIN IF(29998=PAGETAIL)AND(CURLIST.HEADFIELD=
  4474  CURLIST.TAILFIELD)AND(DEADCYCLES=0)THEN BEGIN ITSALLOVER:=TRUE;GOTO 10;
  4475  END;BACKINPUT;BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNULLBOX;
  4476  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4477  MEM[CURLIST.TAILFIELD+1].INT:=EQTB[5833].INT;
  4478  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(8);
  4479  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4480  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(-1073741824);
  4481  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;BUILDPAGE;END;
  4482  ITSALLOVER:=FALSE;10:END;{:1054}{1060:}PROCEDURE APPENDGLUE;
  4483  VAR S:SMALLNUMBER;BEGIN S:=CURCHR;CASE S OF 0:CURVAL:=4;1:CURVAL:=8;
  4484  2:CURVAL:=12;3:CURVAL:=16;4:SCANGLUE(2);5:SCANGLUE(3);END;
  4485  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(CURVAL);
  4486  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4487  IF S>=4 THEN BEGIN MEM[CURVAL].HH.RH:=MEM[CURVAL].HH.RH-1;
  4488  IF S>4 THEN MEM[CURLIST.TAILFIELD].HH.B1:=99;END;END;
  4489  {:1060}{1061:}PROCEDURE APPENDKERN;VAR S:QUARTERWORD;BEGIN S:=CURCHR;
  4490  SCANDIMEN(S=99,FALSE,FALSE);
  4491  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(CURVAL);
  4492  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4493  MEM[CURLIST.TAILFIELD].HH.B1:=S;END;{:1061}{1064:}PROCEDURE OFFSAVE;
  4494  VAR P:HALFWORD;
  4495  BEGIN IF CURGROUP=0 THEN{1066:}BEGIN BEGIN IF INTERACTION=3 THEN;
  4496  PRINTNL(262);PRINT(777);END;PRINTCMDCHR(CURCMD,CURCHR);BEGIN HELPPTR:=1;
  4497  HELPLINE[0]:=1043;END;ERROR;END{:1066}ELSE BEGIN BACKINPUT;P:=GETAVAIL;
  4498  MEM[29997].HH.RH:=P;BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(625);
  4499  END;{1065:}CASE CURGROUP OF 14:BEGIN MEM[P].HH.LH:=6711;PRINTESC(516);
  4500  END;15:BEGIN MEM[P].HH.LH:=804;PRINTCHAR(36);END;
  4501  16:BEGIN MEM[P].HH.LH:=6712;MEM[P].HH.RH:=GETAVAIL;P:=MEM[P].HH.RH;
  4502  MEM[P].HH.LH:=3118;PRINTESC(1042);END;ELSE BEGIN MEM[P].HH.LH:=637;
  4503  PRINTCHAR(125);END END{:1065};PRINT(626);
  4504  BEGINTOKENLIST(MEM[29997].HH.RH,4);BEGIN HELPPTR:=5;HELPLINE[4]:=1037;
  4505  HELPLINE[3]:=1038;HELPLINE[2]:=1039;HELPLINE[1]:=1040;HELPLINE[0]:=1041;
  4506  END;ERROR;END;END;{:1064}{1069:}PROCEDURE EXTRARIGHTBRACE;
  4507  BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(1048);END;
  4508  CASE CURGROUP OF 14:PRINTESC(516);15:PRINTCHAR(36);16:PRINTESC(877);END;
  4509  BEGIN HELPPTR:=5;HELPLINE[4]:=1049;HELPLINE[3]:=1050;HELPLINE[2]:=1051;
  4510  HELPLINE[1]:=1052;HELPLINE[0]:=1053;END;ERROR;ALIGNSTATE:=ALIGNSTATE+1;
  4511  END;{:1069}{1070:}PROCEDURE NORMALPARAGRAPH;
  4512  BEGIN IF EQTB[5282].INT<>0 THEN EQWORDDEFINE(5282,0);
  4513  IF EQTB[5847].INT<>0 THEN EQWORDDEFINE(5847,0);
  4514  IF EQTB[5304].INT<>1 THEN EQWORDDEFINE(5304,1);
  4515  IF EQTB[3412].HH.RH<>0 THEN EQDEFINE(3412,118,0);END;
  4516  {:1070}{1075:}PROCEDURE BOXEND(BOXCONTEXT:INTEGER);VAR P:HALFWORD;
  4517  BEGIN IF BOXCONTEXT<1073741824 THEN{1076:}BEGIN IF CURBOX<>0 THEN BEGIN
  4518  MEM[CURBOX+4].INT:=BOXCONTEXT;
  4519  IF ABS(CURLIST.MODEFIELD)=1 THEN BEGIN APPENDTOVLIST(CURBOX);
  4520  IF ADJUSTTAIL<>0 THEN BEGIN IF 29995<>ADJUSTTAIL THEN BEGIN MEM[CURLIST.
  4521  TAILFIELD].HH.RH:=MEM[29995].HH.RH;CURLIST.TAILFIELD:=ADJUSTTAIL;END;
  4522  ADJUSTTAIL:=0;END;IF CURLIST.MODEFIELD>0 THEN BUILDPAGE;
  4523  END ELSE BEGIN IF ABS(CURLIST.MODEFIELD)=102 THEN CURLIST.AUXFIELD.HH.LH
  4524  :=1000 ELSE BEGIN P:=NEWNOAD;MEM[P+1].HH.RH:=2;MEM[P+1].HH.LH:=CURBOX;
  4525  CURBOX:=P;END;MEM[CURLIST.TAILFIELD].HH.RH:=CURBOX;
  4526  CURLIST.TAILFIELD:=CURBOX;END;END;
  4527  END{:1076}ELSE IF BOXCONTEXT<1073742336 THEN{1077:}IF BOXCONTEXT<
  4528  1073742080 THEN EQDEFINE(-1073738146+BOXCONTEXT,119,CURBOX)ELSE
  4529  GEQDEFINE(-1073738402+BOXCONTEXT,119,CURBOX){:1077}ELSE IF CURBOX<>0
  4530  THEN IF BOXCONTEXT>1073742336 THEN{1078:}BEGIN{404:}REPEAT GETXTOKEN;
  4531  UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
  4532  IF((CURCMD=26)AND(ABS(CURLIST.MODEFIELD)<>1))OR((CURCMD=27)AND(ABS(
  4533  CURLIST.MODEFIELD)=1))THEN BEGIN APPENDGLUE;
  4534  MEM[CURLIST.TAILFIELD].HH.B1:=BOXCONTEXT-(1073742237);
  4535  MEM[CURLIST.TAILFIELD+1].HH.RH:=CURBOX;
  4536  END ELSE BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(1066);END;
  4537  BEGIN HELPPTR:=3;HELPLINE[2]:=1067;HELPLINE[1]:=1068;HELPLINE[0]:=1069;
  4538  END;BACKERROR;FLUSHNODELIST(CURBOX);END;END{:1078}ELSE SHIPOUT(CURBOX);
  4539  END;{:1075}{1079:}PROCEDURE BEGINBOX(BOXCONTEXT:INTEGER);LABEL 10,30;
  4540  VAR P,Q:HALFWORD;M:QUARTERWORD;K:HALFWORD;N:EIGHTBITS;
  4541  BEGIN CASE CURCHR OF 0:BEGIN SCANEIGHTBITINT;
  4542  CURBOX:=EQTB[3678+CURVAL].HH.RH;EQTB[3678+CURVAL].HH.RH:=0;END;
  4543  1:BEGIN SCANEIGHTBITINT;CURBOX:=COPYNODELIST(EQTB[3678+CURVAL].HH.RH);
  4544  END;2:{1080:}BEGIN CURBOX:=0;
  4545  IF ABS(CURLIST.MODEFIELD)=203 THEN BEGIN YOUCANT;BEGIN HELPPTR:=1;
  4546  HELPLINE[0]:=1070;END;ERROR;
  4547  END ELSE IF(CURLIST.MODEFIELD=1)AND(CURLIST.HEADFIELD=CURLIST.TAILFIELD)
  4548  THEN BEGIN YOUCANT;BEGIN HELPPTR:=2;HELPLINE[1]:=1071;HELPLINE[0]:=1072;
  4549  END;ERROR;
  4550  END ELSE BEGIN IF NOT(CURLIST.TAILFIELD>=HIMEMMIN)THEN IF(MEM[CURLIST.
  4551  TAILFIELD].HH.B0=0)OR(MEM[CURLIST.TAILFIELD].HH.B0=1)THEN{1081:}BEGIN Q
  4552  :=CURLIST.HEADFIELD;REPEAT P:=Q;
  4553  IF NOT(Q>=HIMEMMIN)THEN IF MEM[Q].HH.B0=7 THEN BEGIN FOR M:=1 TO MEM[Q].
  4554  HH.B1 DO P:=MEM[P].HH.RH;IF P=CURLIST.TAILFIELD THEN GOTO 30;END;
  4555  Q:=MEM[P].HH.RH;UNTIL Q=CURLIST.TAILFIELD;CURBOX:=CURLIST.TAILFIELD;
  4556  MEM[CURBOX+4].INT:=0;CURLIST.TAILFIELD:=P;MEM[P].HH.RH:=0;30:END{:1081};
  4557  END;END{:1080};3:{1082:}BEGIN SCANEIGHTBITINT;N:=CURVAL;
  4558  IF NOT SCANKEYWORD(842)THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  4559  PRINTNL(262);PRINT(1073);END;BEGIN HELPPTR:=2;HELPLINE[1]:=1074;
  4560  HELPLINE[0]:=1075;END;ERROR;END;SCANDIMEN(FALSE,FALSE,FALSE);
  4561  CURBOX:=VSPLIT(N,CURVAL);END{:1082};ELSE{1083:}BEGIN K:=CURCHR-4;
  4562  SAVESTACK[SAVEPTR+0].INT:=BOXCONTEXT;
  4563  IF K=102 THEN IF(BOXCONTEXT<1073741824)AND(ABS(CURLIST.MODEFIELD)=1)THEN
  4564  SCANSPEC(3,TRUE)ELSE SCANSPEC(2,TRUE)ELSE BEGIN IF K=1 THEN SCANSPEC(4,
  4565  TRUE)ELSE BEGIN SCANSPEC(5,TRUE);K:=1;END;NORMALPARAGRAPH;END;PUSHNEST;
  4566  CURLIST.MODEFIELD:=-K;IF K=1 THEN BEGIN CURLIST.AUXFIELD.INT:=-65536000;
  4567  IF EQTB[3418].HH.RH<>0 THEN BEGINTOKENLIST(EQTB[3418].HH.RH,11);
  4568  END ELSE BEGIN CURLIST.AUXFIELD.HH.LH:=1000;
  4569  IF EQTB[3417].HH.RH<>0 THEN BEGINTOKENLIST(EQTB[3417].HH.RH,10);END;
  4570  GOTO 10;END{:1083}END;BOXEND(BOXCONTEXT);10:END;
  4571  {:1079}{1084:}PROCEDURE SCANBOX(BOXCONTEXT:INTEGER);
  4572  BEGIN{404:}REPEAT GETXTOKEN;UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
  4573  IF CURCMD=20 THEN BEGINBOX(BOXCONTEXT)ELSE IF(BOXCONTEXT>=1073742337)AND
  4574  ((CURCMD=36)OR(CURCMD=35))THEN BEGIN CURBOX:=SCANRULESPEC;
  4575  BOXEND(BOXCONTEXT);END ELSE BEGIN BEGIN IF INTERACTION=3 THEN;
  4576  PRINTNL(262);PRINT(1076);END;BEGIN HELPPTR:=3;HELPLINE[2]:=1077;
  4577  HELPLINE[1]:=1078;HELPLINE[0]:=1079;END;BACKERROR;END;END;
  4578  {:1084}{1086:}PROCEDURE PACKAGE(C:SMALLNUMBER);VAR H:SCALED;P:HALFWORD;
  4579  D:SCALED;BEGIN D:=EQTB[5837].INT;UNSAVE;SAVEPTR:=SAVEPTR-3;
  4580  IF CURLIST.MODEFIELD=-102 THEN CURBOX:=HPACK(MEM[CURLIST.HEADFIELD].HH.
  4581  RH,SAVESTACK[SAVEPTR+2].INT,SAVESTACK[SAVEPTR+1].INT)ELSE BEGIN CURBOX:=
  4582  VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,SAVESTACK[SAVEPTR+2].INT,SAVESTACK
  4583  [SAVEPTR+1].INT,D);IF C=4 THEN{1087:}BEGIN H:=0;P:=MEM[CURBOX+5].HH.RH;
  4584  IF P<>0 THEN IF MEM[P].HH.B0<=2 THEN H:=MEM[P+3].INT;
  4585  MEM[CURBOX+2].INT:=MEM[CURBOX+2].INT-H+MEM[CURBOX+3].INT;
  4586  MEM[CURBOX+3].INT:=H;END{:1087};END;POPNEST;
  4587  BOXEND(SAVESTACK[SAVEPTR+0].INT);END;
  4588  {:1086}{1091:}FUNCTION NORMMIN(H:INTEGER):SMALLNUMBER;
  4589  BEGIN IF H<=0 THEN NORMMIN:=1 ELSE IF H>=63 THEN NORMMIN:=63 ELSE
  4590  NORMMIN:=H;END;PROCEDURE NEWGRAF(INDENTED:BOOLEAN);
  4591  BEGIN CURLIST.PGFIELD:=0;
  4592  IF(CURLIST.MODEFIELD=1)OR(CURLIST.HEADFIELD<>CURLIST.TAILFIELD)THEN
  4593  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(2);
  4594  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;PUSHNEST;
  4595  CURLIST.MODEFIELD:=102;CURLIST.AUXFIELD.HH.LH:=1000;
  4596  IF EQTB[5313].INT<=0 THEN CURLANG:=0 ELSE IF EQTB[5313].INT>255 THEN
  4597  CURLANG:=0 ELSE CURLANG:=EQTB[5313].INT;CURLIST.AUXFIELD.HH.RH:=CURLANG;
  4598  CURLIST.PGFIELD:=(NORMMIN(EQTB[5314].INT)*64+NORMMIN(EQTB[5315].INT))
  4599  *65536+CURLANG;IF INDENTED THEN BEGIN CURLIST.TAILFIELD:=NEWNULLBOX;
  4600  MEM[CURLIST.HEADFIELD].HH.RH:=CURLIST.TAILFIELD;
  4601  MEM[CURLIST.TAILFIELD+1].INT:=EQTB[5830].INT;END;
  4602  IF EQTB[3414].HH.RH<>0 THEN BEGINTOKENLIST(EQTB[3414].HH.RH,7);
  4603  IF NESTPTR=1 THEN BUILDPAGE;END;{:1091}{1093:}PROCEDURE INDENTINHMODE;
  4604  VAR P,Q:HALFWORD;BEGIN IF CURCHR>0 THEN BEGIN P:=NEWNULLBOX;
  4605  MEM[P+1].INT:=EQTB[5830].INT;
  4606  IF ABS(CURLIST.MODEFIELD)=102 THEN CURLIST.AUXFIELD.HH.LH:=1000 ELSE
  4607  BEGIN Q:=NEWNOAD;MEM[Q+1].HH.RH:=2;MEM[Q+1].HH.LH:=P;P:=Q;END;
  4608  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=P;
  4609  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;END;END;
  4610  {:1093}{1095:}PROCEDURE HEADFORVMODE;
  4611  BEGIN IF CURLIST.MODEFIELD<0 THEN IF CURCMD<>36 THEN OFFSAVE ELSE BEGIN
  4612  BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(685);END;PRINTESC(521);
  4613  PRINT(1082);BEGIN HELPPTR:=2;HELPLINE[1]:=1083;HELPLINE[0]:=1084;END;
  4614  ERROR;END ELSE BEGIN BACKINPUT;CURTOK:=PARTOKEN;BACKINPUT;
  4615  CURINPUT.INDEXFIELD:=4;END;END;{:1095}{1096:}PROCEDURE ENDGRAF;
  4616  BEGIN IF CURLIST.MODEFIELD=102 THEN BEGIN IF CURLIST.HEADFIELD=CURLIST.
  4617  TAILFIELD THEN POPNEST ELSE LINEBREAK(EQTB[5269].INT);NORMALPARAGRAPH;
  4618  ERRORCOUNT:=0;END;END;{:1096}{1099:}PROCEDURE BEGININSERTORADJUST;
  4619  BEGIN IF CURCMD=38 THEN CURVAL:=255 ELSE BEGIN SCANEIGHTBITINT;
  4620  IF CURVAL=255 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  4621  PRINT(1085);END;PRINTESC(330);PRINTINT(255);BEGIN HELPPTR:=1;
  4622  HELPLINE[0]:=1086;END;ERROR;CURVAL:=0;END;END;
  4623  SAVESTACK[SAVEPTR+0].INT:=CURVAL;SAVEPTR:=SAVEPTR+1;NEWSAVELEVEL(11);
  4624  SCANLEFTBRACE;NORMALPARAGRAPH;PUSHNEST;CURLIST.MODEFIELD:=-1;
  4625  CURLIST.AUXFIELD.INT:=-65536000;END;{:1099}{1101:}PROCEDURE MAKEMARK;
  4626  VAR P:HALFWORD;BEGIN P:=SCANTOKS(FALSE,TRUE);P:=GETNODE(2);
  4627  MEM[P].HH.B0:=4;MEM[P].HH.B1:=0;MEM[P+1].INT:=DEFREF;
  4628  MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;END;
  4629  {:1101}{1103:}PROCEDURE APPENDPENALTY;BEGIN SCANINT;
  4630  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(CURVAL);
  4631  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4632  IF CURLIST.MODEFIELD=1 THEN BUILDPAGE;END;
  4633  {:1103}{1105:}PROCEDURE DELETELAST;LABEL 10;VAR P,Q:HALFWORD;
  4634  M:QUARTERWORD;
  4635  BEGIN IF(CURLIST.MODEFIELD=1)AND(CURLIST.TAILFIELD=CURLIST.HEADFIELD)
  4636  THEN{1106:}BEGIN IF(CURCHR<>10)OR(LASTGLUE<>65535)THEN BEGIN YOUCANT;
  4637  BEGIN HELPPTR:=2;HELPLINE[1]:=1071;HELPLINE[0]:=1087;END;
  4638  IF CURCHR=11 THEN HELPLINE[0]:=(1088)ELSE IF CURCHR<>10 THEN HELPLINE[0]
  4639  :=(1089);ERROR;END;
  4640  END{:1106}ELSE BEGIN IF NOT(CURLIST.TAILFIELD>=HIMEMMIN)THEN IF MEM[
  4641  CURLIST.TAILFIELD].HH.B0=CURCHR THEN BEGIN Q:=CURLIST.HEADFIELD;
  4642  REPEAT P:=Q;
  4643  IF NOT(Q>=HIMEMMIN)THEN IF MEM[Q].HH.B0=7 THEN BEGIN FOR M:=1 TO MEM[Q].
  4644  HH.B1 DO P:=MEM[P].HH.RH;IF P=CURLIST.TAILFIELD THEN GOTO 10;END;
  4645  Q:=MEM[P].HH.RH;UNTIL Q=CURLIST.TAILFIELD;MEM[P].HH.RH:=0;
  4646  FLUSHNODELIST(CURLIST.TAILFIELD);CURLIST.TAILFIELD:=P;END;END;10:END;
  4647  {:1105}{1110:}PROCEDURE UNPACKAGE;LABEL 10;VAR P:HALFWORD;C:0..1;
  4648  BEGIN C:=CURCHR;SCANEIGHTBITINT;P:=EQTB[3678+CURVAL].HH.RH;
  4649  IF P=0 THEN GOTO 10;
  4650  IF(ABS(CURLIST.MODEFIELD)=203)OR((ABS(CURLIST.MODEFIELD)=1)AND(MEM[P].HH
  4651  .B0<>1))OR((ABS(CURLIST.MODEFIELD)=102)AND(MEM[P].HH.B0<>0))THEN BEGIN
  4652  BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(1097);END;
  4653  BEGIN HELPPTR:=3;HELPLINE[2]:=1098;HELPLINE[1]:=1099;HELPLINE[0]:=1100;
  4654  END;ERROR;GOTO 10;END;
  4655  IF C=1 THEN MEM[CURLIST.TAILFIELD].HH.RH:=COPYNODELIST(MEM[P+5].HH.RH)
  4656  ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=MEM[P+5].HH.RH;
  4657  EQTB[3678+CURVAL].HH.RH:=0;FREENODE(P,7);END;
  4658  WHILE MEM[CURLIST.TAILFIELD].HH.RH<>0 DO CURLIST.TAILFIELD:=MEM[CURLIST.
  4659  TAILFIELD].HH.RH;10:END;{:1110}{1113:}PROCEDURE APPENDITALICCORRECTION;
  4660  LABEL 10;VAR P:HALFWORD;F:INTERNALFONTNUMBER;
  4661  BEGIN IF CURLIST.TAILFIELD<>CURLIST.HEADFIELD THEN BEGIN IF(CURLIST.
  4662  TAILFIELD>=HIMEMMIN)THEN P:=CURLIST.TAILFIELD ELSE IF MEM[CURLIST.
  4663  TAILFIELD].HH.B0=6 THEN P:=CURLIST.TAILFIELD+1 ELSE GOTO 10;
  4664  F:=MEM[P].HH.B0;
  4665  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(FONTINFO[ITALICBASE[F]+(
  4666  FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ.B2-0)DIV 4].INT);
  4667  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4668  MEM[CURLIST.TAILFIELD].HH.B1:=1;END;10:END;
  4669  {:1113}{1117:}PROCEDURE APPENDDISCRETIONARY;VAR C:INTEGER;
  4670  BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWDISC;
  4671  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4672  IF CURCHR=1 THEN BEGIN C:=HYPHENCHAR[EQTB[3934].HH.RH];
  4673  IF C>=0 THEN IF C<256 THEN MEM[CURLIST.TAILFIELD+1].HH.LH:=NEWCHARACTER(
  4674  EQTB[3934].HH.RH,C);END ELSE BEGIN SAVEPTR:=SAVEPTR+1;
  4675  SAVESTACK[SAVEPTR-1].INT:=0;NEWSAVELEVEL(10);SCANLEFTBRACE;PUSHNEST;
  4676  CURLIST.MODEFIELD:=-102;CURLIST.AUXFIELD.HH.LH:=1000;END;END;
  4677  {:1117}{1119:}PROCEDURE BUILDDISCRETIONARY;LABEL 30,10;VAR P,Q:HALFWORD;
  4678  N:INTEGER;BEGIN UNSAVE;{1121:}Q:=CURLIST.HEADFIELD;P:=MEM[Q].HH.RH;N:=0;
  4679  WHILE P<>0 DO BEGIN IF NOT(P>=HIMEMMIN)THEN IF MEM[P].HH.B0>2 THEN IF
  4680  MEM[P].HH.B0<>11 THEN IF MEM[P].HH.B0<>6 THEN BEGIN BEGIN IF INTERACTION
  4681  =3 THEN;PRINTNL(262);PRINT(1107);END;BEGIN HELPPTR:=1;HELPLINE[0]:=1108;
  4682  END;ERROR;BEGINDIAGNOSTIC;PRINTNL(1109);SHOWBOX(P);ENDDIAGNOSTIC(TRUE);
  4683  FLUSHNODELIST(P);MEM[Q].HH.RH:=0;GOTO 30;END;Q:=P;P:=MEM[Q].HH.RH;
  4684  N:=N+1;END;30:{:1121};P:=MEM[CURLIST.HEADFIELD].HH.RH;POPNEST;
  4685  CASE SAVESTACK[SAVEPTR-1].INT OF 0:MEM[CURLIST.TAILFIELD+1].HH.LH:=P;
  4686  1:MEM[CURLIST.TAILFIELD+1].HH.RH:=P;
  4687  2:{1120:}BEGIN IF(N>0)AND(ABS(CURLIST.MODEFIELD)=203)THEN BEGIN BEGIN IF
  4688  INTERACTION=3 THEN;PRINTNL(262);PRINT(1101);END;PRINTESC(349);
  4689  BEGIN HELPPTR:=2;HELPLINE[1]:=1102;HELPLINE[0]:=1103;END;
  4690  FLUSHNODELIST(P);N:=0;ERROR;END ELSE MEM[CURLIST.TAILFIELD].HH.RH:=P;
  4691  IF N<=255 THEN MEM[CURLIST.TAILFIELD].HH.B1:=N ELSE BEGIN BEGIN IF
  4692  INTERACTION=3 THEN;PRINTNL(262);PRINT(1104);END;BEGIN HELPPTR:=2;
  4693  HELPLINE[1]:=1105;HELPLINE[0]:=1106;END;ERROR;END;
  4694  IF N>0 THEN CURLIST.TAILFIELD:=Q;SAVEPTR:=SAVEPTR-1;GOTO 10;END{:1120};
  4695  END;SAVESTACK[SAVEPTR-1].INT:=SAVESTACK[SAVEPTR-1].INT+1;
  4696  NEWSAVELEVEL(10);SCANLEFTBRACE;PUSHNEST;CURLIST.MODEFIELD:=-102;
  4697  CURLIST.AUXFIELD.HH.LH:=1000;10:END;{:1119}{1123:}PROCEDURE MAKEACCENT;
  4698  VAR S,T:REAL;P,Q,R:HALFWORD;F:INTERNALFONTNUMBER;A,H,X,W,DELTA:SCALED;
  4699  I:FOURQUARTERS;BEGIN SCANCHARNUM;F:=EQTB[3934].HH.RH;
  4700  P:=NEWCHARACTER(F,CURVAL);
  4701  IF P<>0 THEN BEGIN X:=FONTINFO[5+PARAMBASE[F]].INT;
  4702  S:=FONTINFO[1+PARAMBASE[F]].INT/65536.0;
  4703  A:=FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ.B0].INT
  4704  ;DOASSIGNMENTS;{1124:}Q:=0;F:=EQTB[3934].HH.RH;
  4705  IF(CURCMD=11)OR(CURCMD=12)OR(CURCMD=68)THEN Q:=NEWCHARACTER(F,CURCHR)
  4706  ELSE IF CURCMD=16 THEN BEGIN SCANCHARNUM;Q:=NEWCHARACTER(F,CURVAL);
  4707  END ELSE BACKINPUT{:1124};
  4708  IF Q<>0 THEN{1125:}BEGIN T:=FONTINFO[1+PARAMBASE[F]].INT/65536.0;
  4709  I:=FONTINFO[CHARBASE[F]+MEM[Q].HH.B1].QQQQ;
  4710  W:=FONTINFO[WIDTHBASE[F]+I.B0].INT;
  4711  H:=FONTINFO[HEIGHTBASE[F]+(I.B1-0)DIV 16].INT;
  4712  IF H<>X THEN BEGIN P:=HPACK(P,0,1);MEM[P+4].INT:=X-H;END;
  4713  DELTA:=ROUND((W-A)/2.0+H*T-X*S);R:=NEWKERN(DELTA);MEM[R].HH.B1:=2;
  4714  MEM[CURLIST.TAILFIELD].HH.RH:=R;MEM[R].HH.RH:=P;
  4715  CURLIST.TAILFIELD:=NEWKERN(-A-DELTA);MEM[CURLIST.TAILFIELD].HH.B1:=2;
  4716  MEM[P].HH.RH:=CURLIST.TAILFIELD;P:=Q;END{:1125};
  4717  MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;
  4718  CURLIST.AUXFIELD.HH.LH:=1000;END;END;{:1123}{1127:}PROCEDURE ALIGNERROR;
  4719  BEGIN IF ABS(ALIGNSTATE)>2 THEN{1128:}BEGIN BEGIN IF INTERACTION=3 THEN;
  4720  PRINTNL(262);PRINT(1114);END;PRINTCMDCHR(CURCMD,CURCHR);
  4721  IF CURTOK=1062 THEN BEGIN BEGIN HELPPTR:=6;HELPLINE[5]:=1115;
  4722  HELPLINE[4]:=1116;HELPLINE[3]:=1117;HELPLINE[2]:=1118;HELPLINE[1]:=1119;
  4723  HELPLINE[0]:=1120;END;END ELSE BEGIN BEGIN HELPPTR:=5;HELPLINE[4]:=1115;
  4724  HELPLINE[3]:=1121;HELPLINE[2]:=1118;HELPLINE[1]:=1119;HELPLINE[0]:=1120;
  4725  END;END;ERROR;END{:1128}ELSE BEGIN BACKINPUT;
  4726  IF ALIGNSTATE<0 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  4727  PRINT(657);END;ALIGNSTATE:=ALIGNSTATE+1;CURTOK:=379;
  4728  END ELSE BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(1110);END;
  4729  ALIGNSTATE:=ALIGNSTATE-1;CURTOK:=637;END;BEGIN HELPPTR:=3;
  4730  HELPLINE[2]:=1111;HELPLINE[1]:=1112;HELPLINE[0]:=1113;END;INSERROR;END;
  4731  END;{:1127}{1129:}PROCEDURE NOALIGNERROR;
  4732  BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(1114);END;
  4733  PRINTESC(527);BEGIN HELPPTR:=2;HELPLINE[1]:=1122;HELPLINE[0]:=1123;END;
  4734  ERROR;END;PROCEDURE OMITERROR;BEGIN BEGIN IF INTERACTION=3 THEN;
  4735  PRINTNL(262);PRINT(1114);END;PRINTESC(530);BEGIN HELPPTR:=2;
  4736  HELPLINE[1]:=1124;HELPLINE[0]:=1123;END;ERROR;END;
  4737  {:1129}{1131:}PROCEDURE DOENDV;BEGIN BASEPTR:=INPUTPTR;
  4738  INPUTSTACK[BASEPTR]:=CURINPUT;
  4739  WHILE(INPUTSTACK[BASEPTR].INDEXFIELD<>2)AND(INPUTSTACK[BASEPTR].LOCFIELD
  4740  =0)AND(INPUTSTACK[BASEPTR].STATEFIELD=0)DO BASEPTR:=BASEPTR-1;
  4741  IF(INPUTSTACK[BASEPTR].INDEXFIELD<>2)OR(INPUTSTACK[BASEPTR].LOCFIELD<>0)
  4742  OR(INPUTSTACK[BASEPTR].STATEFIELD<>0)THEN FATALERROR(595);
  4743  IF CURGROUP=6 THEN BEGIN ENDGRAF;IF FINCOL THEN FINROW;END ELSE OFFSAVE;
  4744  END;{:1131}{1135:}PROCEDURE CSERROR;BEGIN BEGIN IF INTERACTION=3 THEN;
  4745  PRINTNL(262);PRINT(777);END;PRINTESC(505);BEGIN HELPPTR:=1;
  4746  HELPLINE[0]:=1126;END;ERROR;END;
  4747  {:1135}{1136:}PROCEDURE PUSHMATH(C:GROUPCODE);BEGIN PUSHNEST;
  4748  CURLIST.MODEFIELD:=-203;CURLIST.AUXFIELD.INT:=0;NEWSAVELEVEL(C);END;
  4749  {:1136}{1138:}PROCEDURE INITMATH;LABEL 21,40,45,30;VAR W:SCALED;
  4750  L:SCALED;S:SCALED;P:HALFWORD;Q:HALFWORD;F:INTERNALFONTNUMBER;N:INTEGER;
  4751  V:SCALED;D:SCALED;BEGIN GETTOKEN;
  4752  IF(CURCMD=3)AND(CURLIST.MODEFIELD>0)THEN{1145:}BEGIN IF CURLIST.
  4753  HEADFIELD=CURLIST.TAILFIELD THEN BEGIN POPNEST;W:=-1073741823;
  4754  END ELSE BEGIN LINEBREAK(EQTB[5270].INT);
  4755  {1146:}V:=MEM[JUSTBOX+4].INT+2*FONTINFO[6+PARAMBASE[EQTB[3934].HH.RH]].
  4756  INT;W:=-1073741823;P:=MEM[JUSTBOX+5].HH.RH;
  4757  WHILE P<>0 DO BEGIN{1147:}21:IF(P>=HIMEMMIN)THEN BEGIN F:=MEM[P].HH.B0;
  4758  D:=FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ.B0].INT
  4759  ;GOTO 40;END;CASE MEM[P].HH.B0 OF 0,1,2:BEGIN D:=MEM[P+1].INT;GOTO 40;
  4760  END;6:{652:}BEGIN MEM[29988]:=MEM[P+1];MEM[29988].HH.RH:=MEM[P].HH.RH;
  4761  P:=29988;GOTO 21;END{:652};11,9:D:=MEM[P+1].INT;
  4762  10:{1148:}BEGIN Q:=MEM[P+1].HH.LH;D:=MEM[Q+1].INT;
  4763  IF MEM[JUSTBOX+5].HH.B0=1 THEN BEGIN IF(MEM[JUSTBOX+5].HH.B1=MEM[Q].HH.
  4764  B0)AND(MEM[Q+2].INT<>0)THEN V:=1073741823;
  4765  END ELSE IF MEM[JUSTBOX+5].HH.B0=2 THEN BEGIN IF(MEM[JUSTBOX+5].HH.B1=
  4766  MEM[Q].HH.B1)AND(MEM[Q+3].INT<>0)THEN V:=1073741823;END;
  4767  IF MEM[P].HH.B1>=100 THEN GOTO 40;END{:1148};8:{1361:}D:=0{:1361};
  4768  ELSE D:=0 END{:1147};IF V<1073741823 THEN V:=V+D;GOTO 45;
  4769  40:IF V<1073741823 THEN BEGIN V:=V+D;W:=V;END ELSE BEGIN W:=1073741823;
  4770  GOTO 30;END;45:P:=MEM[P].HH.RH;END;30:{:1146};END;
  4771  {1149:}IF EQTB[3412].HH.RH=0 THEN IF(EQTB[5847].INT<>0)AND(((EQTB[5304].
  4772  INT>=0)AND(CURLIST.PGFIELD+2>EQTB[5304].INT))OR(CURLIST.PGFIELD+1<-EQTB[
  4773  5304].INT))THEN BEGIN L:=EQTB[5833].INT-ABS(EQTB[5847].INT);
  4774  IF EQTB[5847].INT>0 THEN S:=EQTB[5847].INT ELSE S:=0;
  4775  END ELSE BEGIN L:=EQTB[5833].INT;S:=0;
  4776  END ELSE BEGIN N:=MEM[EQTB[3412].HH.RH].HH.LH;
  4777  IF CURLIST.PGFIELD+2>=N THEN P:=EQTB[3412].HH.RH+2*N ELSE P:=EQTB[3412].
  4778  HH.RH+2*(CURLIST.PGFIELD+2);S:=MEM[P-1].INT;L:=MEM[P].INT;END{:1149};
  4779  PUSHMATH(15);CURLIST.MODEFIELD:=203;EQWORDDEFINE(5307,-1);
  4780  EQWORDDEFINE(5843,W);EQWORDDEFINE(5844,L);EQWORDDEFINE(5845,S);
  4781  IF EQTB[3416].HH.RH<>0 THEN BEGINTOKENLIST(EQTB[3416].HH.RH,9);
  4782  IF NESTPTR=1 THEN BUILDPAGE;END{:1145}ELSE BEGIN BACKINPUT;
  4783  {1139:}BEGIN PUSHMATH(15);EQWORDDEFINE(5307,-1);
  4784  IF EQTB[3415].HH.RH<>0 THEN BEGINTOKENLIST(EQTB[3415].HH.RH,8);
  4785  END{:1139};END;END;{:1138}{1142:}PROCEDURE STARTEQNO;
  4786  BEGIN SAVESTACK[SAVEPTR+0].INT:=CURCHR;SAVEPTR:=SAVEPTR+1;
  4787  {1139:}BEGIN PUSHMATH(15);EQWORDDEFINE(5307,-1);
  4788  IF EQTB[3415].HH.RH<>0 THEN BEGINTOKENLIST(EQTB[3415].HH.RH,8);
  4789  END{:1139};END;{:1142}{1151:}PROCEDURE SCANMATH(P:HALFWORD);
  4790  LABEL 20,21,10;VAR C:INTEGER;BEGIN 20:{404:}REPEAT GETXTOKEN;
  4791  UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
  4792  21:CASE CURCMD OF 11,12,68:BEGIN C:=EQTB[5007+CURCHR].HH.RH-0;
  4793  IF C=32768 THEN BEGIN{1152:}BEGIN CURCS:=CURCHR+1;
  4794  CURCMD:=EQTB[CURCS].HH.B0;CURCHR:=EQTB[CURCS].HH.RH;XTOKEN;BACKINPUT;
  4795  END{:1152};GOTO 20;END;END;16:BEGIN SCANCHARNUM;CURCHR:=CURVAL;
  4796  CURCMD:=68;GOTO 21;END;17:BEGIN SCANFIFTEENBITINT;C:=CURVAL;END;
  4797  69:C:=CURCHR;15:BEGIN SCANTWENTYSEVENBITINT;C:=CURVAL DIV 4096;END;
  4798  ELSE{1153:}BEGIN BACKINPUT;SCANLEFTBRACE;SAVESTACK[SAVEPTR+0].INT:=P;
  4799  SAVEPTR:=SAVEPTR+1;PUSHMATH(9);GOTO 10;END{:1153}END;MEM[P].HH.RH:=1;
  4800  MEM[P].HH.B1:=C MOD 256+0;
  4801  IF(C>=28672)AND((EQTB[5307].INT>=0)AND(EQTB[5307].INT<16))THEN MEM[P].HH
  4802  .B0:=EQTB[5307].INT ELSE MEM[P].HH.B0:=(C DIV 256)MOD 16;10:END;
  4803  {:1151}{1155:}PROCEDURE SETMATHCHAR(C:INTEGER);VAR P:HALFWORD;
  4804  BEGIN IF C>=32768 THEN{1152:}BEGIN CURCS:=CURCHR+1;
  4805  CURCMD:=EQTB[CURCS].HH.B0;CURCHR:=EQTB[CURCS].HH.RH;XTOKEN;BACKINPUT;
  4806  END{:1152}ELSE BEGIN P:=NEWNOAD;MEM[P+1].HH.RH:=1;
  4807  MEM[P+1].HH.B1:=C MOD 256+0;MEM[P+1].HH.B0:=(C DIV 256)MOD 16;
  4808  IF C>=28672 THEN BEGIN IF((EQTB[5307].INT>=0)AND(EQTB[5307].INT<16))THEN
  4809  MEM[P+1].HH.B0:=EQTB[5307].INT;MEM[P].HH.B0:=16;
  4810  END ELSE MEM[P].HH.B0:=16+(C DIV 4096);MEM[CURLIST.TAILFIELD].HH.RH:=P;
  4811  CURLIST.TAILFIELD:=P;END;END;{:1155}{1159:}PROCEDURE MATHLIMITSWITCH;
  4812  LABEL 10;
  4813  BEGIN IF CURLIST.HEADFIELD<>CURLIST.TAILFIELD THEN IF MEM[CURLIST.
  4814  TAILFIELD].HH.B0=17 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.B1:=CURCHR;
  4815  GOTO 10;END;BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(1130);END;
  4816  BEGIN HELPPTR:=1;HELPLINE[0]:=1131;END;ERROR;10:END;
  4817  {:1159}{1160:}PROCEDURE SCANDELIMITER(P:HALFWORD;R:BOOLEAN);
  4818  BEGIN IF R THEN SCANTWENTYSEVENBITINT ELSE BEGIN{404:}REPEAT GETXTOKEN;
  4819  UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
  4820  CASE CURCMD OF 11,12:CURVAL:=EQTB[5574+CURCHR].INT;
  4821  15:SCANTWENTYSEVENBITINT;ELSE CURVAL:=-1 END;END;
  4822  IF CURVAL<0 THEN{1161:}BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  4823  PRINT(1132);END;BEGIN HELPPTR:=6;HELPLINE[5]:=1133;HELPLINE[4]:=1134;
  4824  HELPLINE[3]:=1135;HELPLINE[2]:=1136;HELPLINE[1]:=1137;HELPLINE[0]:=1138;
  4825  END;BACKERROR;CURVAL:=0;END{:1161};
  4826  MEM[P].QQQQ.B0:=(CURVAL DIV 1048576)MOD 16;
  4827  MEM[P].QQQQ.B1:=(CURVAL DIV 4096)MOD 256+0;
  4828  MEM[P].QQQQ.B2:=(CURVAL DIV 256)MOD 16;MEM[P].QQQQ.B3:=CURVAL MOD 256+0;
  4829  END;{:1160}{1163:}PROCEDURE MATHRADICAL;
  4830  BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=GETNODE(5);
  4831  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4832  MEM[CURLIST.TAILFIELD].HH.B0:=24;MEM[CURLIST.TAILFIELD].HH.B1:=0;
  4833  MEM[CURLIST.TAILFIELD+1].HH:=EMPTYFIELD;
  4834  MEM[CURLIST.TAILFIELD+3].HH:=EMPTYFIELD;
  4835  MEM[CURLIST.TAILFIELD+2].HH:=EMPTYFIELD;
  4836  SCANDELIMITER(CURLIST.TAILFIELD+4,TRUE);SCANMATH(CURLIST.TAILFIELD+1);
  4837  END;{:1163}{1165:}PROCEDURE MATHAC;
  4838  BEGIN IF CURCMD=45 THEN{1166:}BEGIN BEGIN IF INTERACTION=3 THEN;
  4839  PRINTNL(262);PRINT(1139);END;PRINTESC(523);PRINT(1140);BEGIN HELPPTR:=2;
  4840  HELPLINE[1]:=1141;HELPLINE[0]:=1142;END;ERROR;END{:1166};
  4841  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=GETNODE(5);
  4842  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4843  MEM[CURLIST.TAILFIELD].HH.B0:=28;MEM[CURLIST.TAILFIELD].HH.B1:=0;
  4844  MEM[CURLIST.TAILFIELD+1].HH:=EMPTYFIELD;
  4845  MEM[CURLIST.TAILFIELD+3].HH:=EMPTYFIELD;
  4846  MEM[CURLIST.TAILFIELD+2].HH:=EMPTYFIELD;
  4847  MEM[CURLIST.TAILFIELD+4].HH.RH:=1;SCANFIFTEENBITINT;
  4848  MEM[CURLIST.TAILFIELD+4].HH.B1:=CURVAL MOD 256+0;
  4849  IF(CURVAL>=28672)AND((EQTB[5307].INT>=0)AND(EQTB[5307].INT<16))THEN MEM[
  4850  CURLIST.TAILFIELD+4].HH.B0:=EQTB[5307].INT ELSE MEM[CURLIST.TAILFIELD+4]
  4851  .HH.B0:=(CURVAL DIV 256)MOD 16;SCANMATH(CURLIST.TAILFIELD+1);END;
  4852  {:1165}{1172:}PROCEDURE APPENDCHOICES;
  4853  BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWCHOICE;
  4854  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;SAVEPTR:=SAVEPTR+1;
  4855  SAVESTACK[SAVEPTR-1].INT:=0;PUSHMATH(13);SCANLEFTBRACE;END;
  4856  {:1172}{1174:}{1184:}FUNCTION FINMLIST(P:HALFWORD):HALFWORD;
  4857  VAR Q:HALFWORD;
  4858  BEGIN IF CURLIST.AUXFIELD.INT<>0 THEN{1185:}BEGIN MEM[CURLIST.AUXFIELD.
  4859  INT+3].HH.RH:=3;
  4860  MEM[CURLIST.AUXFIELD.INT+3].HH.LH:=MEM[CURLIST.HEADFIELD].HH.RH;
  4861  IF P=0 THEN Q:=CURLIST.AUXFIELD.INT ELSE BEGIN Q:=MEM[CURLIST.AUXFIELD.
  4862  INT+2].HH.LH;IF MEM[Q].HH.B0<>30 THEN CONFUSION(877);
  4863  MEM[CURLIST.AUXFIELD.INT+2].HH.LH:=MEM[Q].HH.RH;
  4864  MEM[Q].HH.RH:=CURLIST.AUXFIELD.INT;MEM[CURLIST.AUXFIELD.INT].HH.RH:=P;
  4865  END;END{:1185}ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=P;
  4866  Q:=MEM[CURLIST.HEADFIELD].HH.RH;END;POPNEST;FINMLIST:=Q;END;
  4867  {:1184}PROCEDURE BUILDCHOICES;LABEL 10;VAR P:HALFWORD;BEGIN UNSAVE;
  4868  P:=FINMLIST(0);
  4869  CASE SAVESTACK[SAVEPTR-1].INT OF 0:MEM[CURLIST.TAILFIELD+1].HH.LH:=P;
  4870  1:MEM[CURLIST.TAILFIELD+1].HH.RH:=P;2:MEM[CURLIST.TAILFIELD+2].HH.LH:=P;
  4871  3:BEGIN MEM[CURLIST.TAILFIELD+2].HH.RH:=P;SAVEPTR:=SAVEPTR-1;GOTO 10;
  4872  END;END;SAVESTACK[SAVEPTR-1].INT:=SAVESTACK[SAVEPTR-1].INT+1;
  4873  PUSHMATH(13);SCANLEFTBRACE;10:END;{:1174}{1176:}PROCEDURE SUBSUP;
  4874  VAR T:SMALLNUMBER;P:HALFWORD;BEGIN T:=0;P:=0;
  4875  IF CURLIST.TAILFIELD<>CURLIST.HEADFIELD THEN IF(MEM[CURLIST.TAILFIELD].
  4876  HH.B0>=16)AND(MEM[CURLIST.TAILFIELD].HH.B0<30)THEN BEGIN P:=CURLIST.
  4877  TAILFIELD+2+CURCMD-7;T:=MEM[P].HH.RH;END;
  4878  IF(P=0)OR(T<>0)THEN{1177:}BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=
  4879  NEWNOAD;CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4880  P:=CURLIST.TAILFIELD+2+CURCMD-7;
  4881  IF T<>0 THEN BEGIN IF CURCMD=7 THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  4882  PRINTNL(262);PRINT(1143);END;BEGIN HELPPTR:=1;HELPLINE[0]:=1144;END;
  4883  END ELSE BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(1145);END;
  4884  BEGIN HELPPTR:=1;HELPLINE[0]:=1146;END;END;ERROR;END;END{:1177};
  4885  SCANMATH(P);END;{:1176}{1181:}PROCEDURE MATHFRACTION;VAR C:SMALLNUMBER;
  4886  BEGIN C:=CURCHR;
  4887  IF CURLIST.AUXFIELD.INT<>0 THEN{1183:}BEGIN IF C>=3 THEN BEGIN
  4888  SCANDELIMITER(29988,FALSE);SCANDELIMITER(29988,FALSE);END;
  4889  IF C MOD 3=0 THEN SCANDIMEN(FALSE,FALSE,FALSE);
  4890  BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(1153);END;
  4891  BEGIN HELPPTR:=3;HELPLINE[2]:=1154;HELPLINE[1]:=1155;HELPLINE[0]:=1156;
  4892  END;ERROR;END{:1183}ELSE BEGIN CURLIST.AUXFIELD.INT:=GETNODE(6);
  4893  MEM[CURLIST.AUXFIELD.INT].HH.B0:=25;MEM[CURLIST.AUXFIELD.INT].HH.B1:=0;
  4894  MEM[CURLIST.AUXFIELD.INT+2].HH.RH:=3;
  4895  MEM[CURLIST.AUXFIELD.INT+2].HH.LH:=MEM[CURLIST.HEADFIELD].HH.RH;
  4896  MEM[CURLIST.AUXFIELD.INT+3].HH:=EMPTYFIELD;
  4897  MEM[CURLIST.AUXFIELD.INT+4].QQQQ:=NULLDELIMITER;
  4898  MEM[CURLIST.AUXFIELD.INT+5].QQQQ:=NULLDELIMITER;
  4899  MEM[CURLIST.HEADFIELD].HH.RH:=0;CURLIST.TAILFIELD:=CURLIST.HEADFIELD;
  4900  {1182:}IF C>=3 THEN BEGIN SCANDELIMITER(CURLIST.AUXFIELD.INT+4,FALSE);
  4901  SCANDELIMITER(CURLIST.AUXFIELD.INT+5,FALSE);END;
  4902  CASE C MOD 3 OF 0:BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
  4903  MEM[CURLIST.AUXFIELD.INT+1].INT:=CURVAL;END;
  4904  1:MEM[CURLIST.AUXFIELD.INT+1].INT:=1073741824;
  4905  2:MEM[CURLIST.AUXFIELD.INT+1].INT:=0;END{:1182};END;END;
  4906  {:1181}{1191:}PROCEDURE MATHLEFTRIGHT;VAR T:SMALLNUMBER;P:HALFWORD;
  4907  BEGIN T:=CURCHR;
  4908  IF(T=31)AND(CURGROUP<>16)THEN{1192:}BEGIN IF CURGROUP=15 THEN BEGIN
  4909  SCANDELIMITER(29988,FALSE);BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  4910  PRINT(777);END;PRINTESC(877);BEGIN HELPPTR:=1;HELPLINE[0]:=1157;END;
  4911  ERROR;END ELSE OFFSAVE;END{:1192}ELSE BEGIN P:=NEWNOAD;MEM[P].HH.B0:=T;
  4912  SCANDELIMITER(P+1,FALSE);IF T=30 THEN BEGIN PUSHMATH(16);
  4913  MEM[CURLIST.HEADFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;
  4914  END ELSE BEGIN P:=FINMLIST(P);UNSAVE;
  4915  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
  4916  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4917  MEM[CURLIST.TAILFIELD].HH.B0:=23;MEM[CURLIST.TAILFIELD+1].HH.RH:=3;
  4918  MEM[CURLIST.TAILFIELD+1].HH.LH:=P;END;END;END;
  4919  {:1191}{1194:}PROCEDURE AFTERMATH;VAR L:BOOLEAN;DANGER:BOOLEAN;
  4920  M:INTEGER;P:HALFWORD;A:HALFWORD;{1198:}B:HALFWORD;W:SCALED;Z:SCALED;
  4921  E:SCALED;Q:SCALED;D:SCALED;S:SCALED;G1,G2:SMALLNUMBER;R:HALFWORD;
  4922  T:HALFWORD;{:1198}BEGIN DANGER:=FALSE;
  4923  {1195:}IF(FONTPARAMS[EQTB[3937].HH.RH]<22)OR(FONTPARAMS[EQTB[3953].HH.RH
  4924  ]<22)OR(FONTPARAMS[EQTB[3969].HH.RH]<22)THEN BEGIN BEGIN IF INTERACTION=
  4925  3 THEN;PRINTNL(262);PRINT(1158);END;BEGIN HELPPTR:=3;HELPLINE[2]:=1159;
  4926  HELPLINE[1]:=1160;HELPLINE[0]:=1161;END;ERROR;FLUSHMATH;DANGER:=TRUE;
  4927  END ELSE IF(FONTPARAMS[EQTB[3938].HH.RH]<13)OR(FONTPARAMS[EQTB[3954].HH.
  4928  RH]<13)OR(FONTPARAMS[EQTB[3970].HH.RH]<13)THEN BEGIN BEGIN IF
  4929  INTERACTION=3 THEN;PRINTNL(262);PRINT(1162);END;BEGIN HELPPTR:=3;
  4930  HELPLINE[2]:=1163;HELPLINE[1]:=1164;HELPLINE[0]:=1165;END;ERROR;
  4931  FLUSHMATH;DANGER:=TRUE;END{:1195};M:=CURLIST.MODEFIELD;L:=FALSE;
  4932  P:=FINMLIST(0);IF CURLIST.MODEFIELD=-M THEN BEGIN{1197:}BEGIN GETXTOKEN;
  4933  IF CURCMD<>3 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  4934  PRINT(1166);END;BEGIN HELPPTR:=2;HELPLINE[1]:=1167;HELPLINE[0]:=1168;
  4935  END;BACKERROR;END;END{:1197};CURMLIST:=P;CURSTYLE:=2;
  4936  MLISTPENALTIES:=FALSE;MLISTTOHLIST;A:=HPACK(MEM[29997].HH.RH,0,1);
  4937  UNSAVE;SAVEPTR:=SAVEPTR-1;IF SAVESTACK[SAVEPTR+0].INT=1 THEN L:=TRUE;
  4938  DANGER:=FALSE;
  4939  {1195:}IF(FONTPARAMS[EQTB[3937].HH.RH]<22)OR(FONTPARAMS[EQTB[3953].HH.RH
  4940  ]<22)OR(FONTPARAMS[EQTB[3969].HH.RH]<22)THEN BEGIN BEGIN IF INTERACTION=
  4941  3 THEN;PRINTNL(262);PRINT(1158);END;BEGIN HELPPTR:=3;HELPLINE[2]:=1159;
  4942  HELPLINE[1]:=1160;HELPLINE[0]:=1161;END;ERROR;FLUSHMATH;DANGER:=TRUE;
  4943  END ELSE IF(FONTPARAMS[EQTB[3938].HH.RH]<13)OR(FONTPARAMS[EQTB[3954].HH.
  4944  RH]<13)OR(FONTPARAMS[EQTB[3970].HH.RH]<13)THEN BEGIN BEGIN IF
  4945  INTERACTION=3 THEN;PRINTNL(262);PRINT(1162);END;BEGIN HELPPTR:=3;
  4946  HELPLINE[2]:=1163;HELPLINE[1]:=1164;HELPLINE[0]:=1165;END;ERROR;
  4947  FLUSHMATH;DANGER:=TRUE;END{:1195};M:=CURLIST.MODEFIELD;P:=FINMLIST(0);
  4948  END ELSE A:=0;
  4949  IF M<0 THEN{1196:}BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWMATH(EQTB
  4950  [5831].INT,0);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4951  CURMLIST:=P;CURSTYLE:=2;MLISTPENALTIES:=(CURLIST.MODEFIELD>0);
  4952  MLISTTOHLIST;MEM[CURLIST.TAILFIELD].HH.RH:=MEM[29997].HH.RH;
  4953  WHILE MEM[CURLIST.TAILFIELD].HH.RH<>0 DO CURLIST.TAILFIELD:=MEM[CURLIST.
  4954  TAILFIELD].HH.RH;
  4955  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWMATH(EQTB[5831].INT,1);
  4956  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4957  CURLIST.AUXFIELD.HH.LH:=1000;UNSAVE;
  4958  END{:1196}ELSE BEGIN IF A=0 THEN{1197:}BEGIN GETXTOKEN;
  4959  IF CURCMD<>3 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  4960  PRINT(1166);END;BEGIN HELPPTR:=2;HELPLINE[1]:=1167;HELPLINE[0]:=1168;
  4961  END;BACKERROR;END;END{:1197};{1199:}CURMLIST:=P;CURSTYLE:=0;
  4962  MLISTPENALTIES:=FALSE;MLISTTOHLIST;P:=MEM[29997].HH.RH;
  4963  ADJUSTTAIL:=29995;B:=HPACK(P,0,1);P:=MEM[B+5].HH.RH;T:=ADJUSTTAIL;
  4964  ADJUSTTAIL:=0;W:=MEM[B+1].INT;Z:=EQTB[5844].INT;S:=EQTB[5845].INT;
  4965  IF(A=0)OR DANGER THEN BEGIN E:=0;Q:=0;END ELSE BEGIN E:=MEM[A+1].INT;
  4966  Q:=E+FONTINFO[6+PARAMBASE[EQTB[3937].HH.RH]].INT;END;
  4967  IF W+Q>Z THEN{1201:}BEGIN IF(E<>0)AND((W-TOTALSHRINK[0]+Q<=Z)OR(
  4968  TOTALSHRINK[1]<>0)OR(TOTALSHRINK[2]<>0)OR(TOTALSHRINK[3]<>0))THEN BEGIN
  4969  FREENODE(B,7);B:=HPACK(P,Z-Q,0);END ELSE BEGIN E:=0;
  4970  IF W>Z THEN BEGIN FREENODE(B,7);B:=HPACK(P,Z,0);END;END;W:=MEM[B+1].INT;
  4971  END{:1201};{1202:}D:=HALF(Z-W);
  4972  IF(E>0)AND(D<2*E)THEN BEGIN D:=HALF(Z-W-E);
  4973  IF P<>0 THEN IF NOT(P>=HIMEMMIN)THEN IF MEM[P].HH.B0=10 THEN D:=0;
  4974  END{:1202};
  4975  {1203:}BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[5274].INT);
  4976  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4977  IF(D+S<=EQTB[5843].INT)OR L THEN BEGIN G1:=3;G2:=4;END ELSE BEGIN G1:=5;
  4978  G2:=6;END;IF L AND(E=0)THEN BEGIN MEM[A+4].INT:=S;APPENDTOVLIST(A);
  4979  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(10000);
  4980  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4981  END ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(G1);
  4982  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END{:1203};
  4983  {1204:}IF E<>0 THEN BEGIN R:=NEWKERN(Z-W-E-D);
  4984  IF L THEN BEGIN MEM[A].HH.RH:=R;MEM[R].HH.RH:=B;B:=A;D:=0;
  4985  END ELSE BEGIN MEM[B].HH.RH:=R;MEM[R].HH.RH:=A;END;B:=HPACK(B,0,1);END;
  4986  MEM[B+4].INT:=S+D;APPENDTOVLIST(B){:1204};
  4987  {1205:}IF(A<>0)AND(E=0)AND NOT L THEN BEGIN BEGIN MEM[CURLIST.TAILFIELD]
  4988  .HH.RH:=NEWPENALTY(10000);
  4989  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4990  MEM[A+4].INT:=S+Z-MEM[A+1].INT;APPENDTOVLIST(A);G2:=0;END;
  4991  IF T<>29995 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=MEM[29995].HH.RH;
  4992  CURLIST.TAILFIELD:=T;END;
  4993  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[5275].INT);
  4994  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  4995  IF G2>0 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(G2);
  4996  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END{:1205};
  4997  RESUMEAFTERDISPLAY{:1199};END;END;
  4998  {:1194}{1200:}PROCEDURE RESUMEAFTERDISPLAY;
  4999  BEGIN IF CURGROUP<>15 THEN CONFUSION(1169);UNSAVE;
  5000  CURLIST.PGFIELD:=CURLIST.PGFIELD+3;PUSHNEST;CURLIST.MODEFIELD:=102;
  5001  CURLIST.AUXFIELD.HH.LH:=1000;
  5002  IF EQTB[5313].INT<=0 THEN CURLANG:=0 ELSE IF EQTB[5313].INT>255 THEN
  5003  CURLANG:=0 ELSE CURLANG:=EQTB[5313].INT;CURLIST.AUXFIELD.HH.RH:=CURLANG;
  5004  CURLIST.PGFIELD:=(NORMMIN(EQTB[5314].INT)*64+NORMMIN(EQTB[5315].INT))
  5005  *65536+CURLANG;{443:}BEGIN GETXTOKEN;IF CURCMD<>10 THEN BACKINPUT;
  5006  END{:443};IF NESTPTR=1 THEN BUILDPAGE;END;
  5007  {:1200}{1211:}{1215:}PROCEDURE GETRTOKEN;LABEL 20;
  5008  BEGIN 20:REPEAT GETTOKEN;UNTIL CURTOK<>2592;
  5009  IF(CURCS=0)OR(CURCS>2614)THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  5010  PRINTNL(262);PRINT(1184);END;BEGIN HELPPTR:=5;HELPLINE[4]:=1185;
  5011  HELPLINE[3]:=1186;HELPLINE[2]:=1187;HELPLINE[1]:=1188;HELPLINE[0]:=1189;
  5012  END;IF CURCS=0 THEN BACKINPUT;CURTOK:=6709;INSERROR;GOTO 20;END;END;
  5013  {:1215}{1229:}PROCEDURE TRAPZEROGLUE;
  5014  BEGIN IF(MEM[CURVAL+1].INT=0)AND(MEM[CURVAL+2].INT=0)AND(MEM[CURVAL+3].
  5015  INT=0)THEN BEGIN MEM[0].HH.RH:=MEM[0].HH.RH+1;DELETEGLUEREF(CURVAL);
  5016  CURVAL:=0;END;END;
  5017  {:1229}{1236:}PROCEDURE DOREGISTERCOMMAND(A:SMALLNUMBER);LABEL 40,10;
  5018  VAR L,Q,R,S:HALFWORD;P:0..3;BEGIN Q:=CURCMD;
  5019  {1237:}BEGIN IF Q<>89 THEN BEGIN GETXTOKEN;
  5020  IF(CURCMD>=73)AND(CURCMD<=76)THEN BEGIN L:=CURCHR;P:=CURCMD-73;GOTO 40;
  5021  END;IF CURCMD<>89 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  5022  PRINT(685);END;PRINTCMDCHR(CURCMD,CURCHR);PRINT(686);PRINTCMDCHR(Q,0);
  5023  BEGIN HELPPTR:=1;HELPLINE[0]:=1210;END;ERROR;GOTO 10;END;END;P:=CURCHR;
  5024  SCANEIGHTBITINT;CASE P OF 0:L:=CURVAL+5318;1:L:=CURVAL+5851;
  5025  2:L:=CURVAL+2900;3:L:=CURVAL+3156;END;END;40:{:1237};
  5026  IF Q=89 THEN SCANOPTIONALEQUALS ELSE IF SCANKEYWORD(1206)THEN;
  5027  ARITHERROR:=FALSE;
  5028  IF Q<91 THEN{1238:}IF P<2 THEN BEGIN IF P=0 THEN SCANINT ELSE SCANDIMEN(
  5029  FALSE,FALSE,FALSE);IF Q=90 THEN CURVAL:=CURVAL+EQTB[L].INT;
  5030  END ELSE BEGIN SCANGLUE(P);IF Q=90 THEN{1239:}BEGIN Q:=NEWSPEC(CURVAL);
  5031  R:=EQTB[L].HH.RH;DELETEGLUEREF(CURVAL);
  5032  MEM[Q+1].INT:=MEM[Q+1].INT+MEM[R+1].INT;
  5033  IF MEM[Q+2].INT=0 THEN MEM[Q].HH.B0:=0;
  5034  IF MEM[Q].HH.B0=MEM[R].HH.B0 THEN MEM[Q+2].INT:=MEM[Q+2].INT+MEM[R+2].
  5035  INT ELSE IF(MEM[Q].HH.B0<MEM[R].HH.B0)AND(MEM[R+2].INT<>0)THEN BEGIN MEM
  5036  [Q+2].INT:=MEM[R+2].INT;MEM[Q].HH.B0:=MEM[R].HH.B0;END;
  5037  IF MEM[Q+3].INT=0 THEN MEM[Q].HH.B1:=0;
  5038  IF MEM[Q].HH.B1=MEM[R].HH.B1 THEN MEM[Q+3].INT:=MEM[Q+3].INT+MEM[R+3].
  5039  INT ELSE IF(MEM[Q].HH.B1<MEM[R].HH.B1)AND(MEM[R+3].INT<>0)THEN BEGIN MEM
  5040  [Q+3].INT:=MEM[R+3].INT;MEM[Q].HH.B1:=MEM[R].HH.B1;END;CURVAL:=Q;
  5041  END{:1239};END{:1238}ELSE{1240:}BEGIN SCANINT;
  5042  IF P<2 THEN IF Q=91 THEN IF P=0 THEN CURVAL:=MULTANDADD(EQTB[L].INT,
  5043  CURVAL,0,2147483647)ELSE CURVAL:=MULTANDADD(EQTB[L].INT,CURVAL,0,
  5044  1073741823)ELSE CURVAL:=XOVERN(EQTB[L].INT,CURVAL)ELSE BEGIN S:=EQTB[L].
  5045  HH.RH;R:=NEWSPEC(S);
  5046  IF Q=91 THEN BEGIN MEM[R+1].INT:=MULTANDADD(MEM[S+1].INT,CURVAL,0,
  5047  1073741823);MEM[R+2].INT:=MULTANDADD(MEM[S+2].INT,CURVAL,0,1073741823);
  5048  MEM[R+3].INT:=MULTANDADD(MEM[S+3].INT,CURVAL,0,1073741823);
  5049  END ELSE BEGIN MEM[R+1].INT:=XOVERN(MEM[S+1].INT,CURVAL);
  5050  MEM[R+2].INT:=XOVERN(MEM[S+2].INT,CURVAL);
  5051  MEM[R+3].INT:=XOVERN(MEM[S+3].INT,CURVAL);END;CURVAL:=R;END;END{:1240};
  5052  IF ARITHERROR THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  5053  PRINT(1207);END;BEGIN HELPPTR:=2;HELPLINE[1]:=1208;HELPLINE[0]:=1209;
  5054  END;IF P>=2 THEN DELETEGLUEREF(CURVAL);ERROR;GOTO 10;END;
  5055  IF P<2 THEN IF(A>=4)THEN GEQWORDDEFINE(L,CURVAL)ELSE EQWORDDEFINE(L,
  5056  CURVAL)ELSE BEGIN TRAPZEROGLUE;
  5057  IF(A>=4)THEN GEQDEFINE(L,117,CURVAL)ELSE EQDEFINE(L,117,CURVAL);END;
  5058  10:END;{:1236}{1243:}PROCEDURE ALTERAUX;VAR C:HALFWORD;
  5059  BEGIN IF CURCHR<>ABS(CURLIST.MODEFIELD)THEN REPORTILLEGALCASE ELSE BEGIN
  5060  C:=CURCHR;SCANOPTIONALEQUALS;
  5061  IF C=1 THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
  5062  CURLIST.AUXFIELD.INT:=CURVAL;END ELSE BEGIN SCANINT;
  5063  IF(CURVAL<=0)OR(CURVAL>32767)THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  5064  PRINTNL(262);PRINT(1213);END;BEGIN HELPPTR:=1;HELPLINE[0]:=1214;END;
  5065  INTERROR(CURVAL);END ELSE CURLIST.AUXFIELD.HH.LH:=CURVAL;END;END;END;
  5066  {:1243}{1244:}PROCEDURE ALTERPREVGRAF;VAR P:0..NESTSIZE;
  5067  BEGIN NEST[NESTPTR]:=CURLIST;P:=NESTPTR;
  5068  WHILE ABS(NEST[P].MODEFIELD)<>1 DO P:=P-1;SCANOPTIONALEQUALS;SCANINT;
  5069  IF CURVAL<0 THEN BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  5070  PRINT(955);END;PRINTESC(532);BEGIN HELPPTR:=1;HELPLINE[0]:=1215;END;
  5071  INTERROR(CURVAL);END ELSE BEGIN NEST[P].PGFIELD:=CURVAL;
  5072  CURLIST:=NEST[NESTPTR];END;END;{:1244}{1245:}PROCEDURE ALTERPAGESOFAR;
  5073  VAR C:0..7;BEGIN C:=CURCHR;SCANOPTIONALEQUALS;
  5074  SCANDIMEN(FALSE,FALSE,FALSE);PAGESOFAR[C]:=CURVAL;END;
  5075  {:1245}{1246:}PROCEDURE ALTERINTEGER;VAR C:0..1;BEGIN C:=CURCHR;
  5076  SCANOPTIONALEQUALS;SCANINT;
  5077  IF C=0 THEN DEADCYCLES:=CURVAL ELSE INSERTPENALTIES:=CURVAL;END;
  5078  {:1246}{1247:}PROCEDURE ALTERBOXDIMEN;VAR C:SMALLNUMBER;B:EIGHTBITS;
  5079  BEGIN C:=CURCHR;SCANEIGHTBITINT;B:=CURVAL;SCANOPTIONALEQUALS;
  5080  SCANDIMEN(FALSE,FALSE,FALSE);
  5081  IF EQTB[3678+B].HH.RH<>0 THEN MEM[EQTB[3678+B].HH.RH+C].INT:=CURVAL;END;
  5082  {:1247}{1257:}PROCEDURE NEWFONT(A:SMALLNUMBER);LABEL 50;VAR U:HALFWORD;
  5083  S:SCALED;F:INTERNALFONTNUMBER;T:STRNUMBER;OLDSETTING:0..21;
  5084  FLUSHABLESTRING:STRNUMBER;BEGIN IF JOBNAME=0 THEN OPENLOGFILE;GETRTOKEN;
  5085  U:=CURCS;
  5086  IF U>=514 THEN T:=HASH[U].RH ELSE IF U>=257 THEN IF U=513 THEN T:=1219
  5087  ELSE T:=U-257 ELSE BEGIN OLDSETTING:=SELECTOR;SELECTOR:=21;PRINT(1219);
  5088  PRINT(U-1);SELECTOR:=OLDSETTING;
  5089  BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(257,POOLSIZE-INITPOOLPTR);END;
  5090  T:=MAKESTRING;END;IF(A>=4)THEN GEQDEFINE(U,87,0)ELSE EQDEFINE(U,87,0);
  5091  SCANOPTIONALEQUALS;SCANFILENAME;{1258:}NAMEINPROGRESS:=TRUE;
  5092  IF SCANKEYWORD(1220)THEN{1259:}BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
  5093  S:=CURVAL;
  5094  IF(S<=0)OR(S>=134217728)THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  5095  PRINTNL(262);PRINT(1222);END;PRINTSCALED(S);PRINT(1223);
  5096  BEGIN HELPPTR:=2;HELPLINE[1]:=1224;HELPLINE[0]:=1225;END;ERROR;
  5097  S:=10*65536;END;END{:1259}ELSE IF SCANKEYWORD(1221)THEN BEGIN SCANINT;
  5098  S:=-CURVAL;
  5099  IF(CURVAL<=0)OR(CURVAL>32768)THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  5100  PRINTNL(262);PRINT(552);END;BEGIN HELPPTR:=1;HELPLINE[0]:=553;END;
  5101  INTERROR(CURVAL);S:=-1000;END;END ELSE S:=-1000;
  5102  NAMEINPROGRESS:=FALSE{:1258};{1260:}FLUSHABLESTRING:=STRPTR-1;
  5103  FOR F:=1 TO FONTPTR DO IF STREQSTR(FONTNAME[F],CURNAME)AND STREQSTR(
  5104  FONTAREA[F],CURAREA)THEN BEGIN IF CURNAME=FLUSHABLESTRING THEN BEGIN
  5105  BEGIN STRPTR:=STRPTR-1;POOLPTR:=STRSTART[STRPTR];END;
  5106  CURNAME:=FONTNAME[F];END;IF S>0 THEN BEGIN IF S=FONTSIZE[F]THEN GOTO 50;
  5107  END ELSE IF FONTSIZE[F]=XNOVERD(FONTDSIZE[F],-S,1000)THEN GOTO 50;
  5108  END{:1260};F:=READFONTINFO(U,CURNAME,CURAREA,S);50:EQTB[U].HH.RH:=F;
  5109  EQTB[2624+F]:=EQTB[U];HASH[2624+F].RH:=T;END;
  5110  {:1257}{1265:}PROCEDURE NEWINTERACTION;BEGIN PRINTLN;
  5111  INTERACTION:=CURCHR;
  5112  {75:}IF INTERACTION=0 THEN SELECTOR:=16 ELSE SELECTOR:=17{:75};
  5113  IF LOGOPENED THEN SELECTOR:=SELECTOR+2;END;
  5114  {:1265}PROCEDURE PREFIXEDCOMMAND;LABEL 30,10;VAR A:SMALLNUMBER;
  5115  F:INTERNALFONTNUMBER;J:HALFWORD;K:FONTINDEX;P,Q:HALFWORD;N:INTEGER;
  5116  E:BOOLEAN;BEGIN A:=0;
  5117  WHILE CURCMD=93 DO BEGIN IF NOT ODD(A DIV CURCHR)THEN A:=A+CURCHR;
  5118  {404:}REPEAT GETXTOKEN;UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
  5119  IF CURCMD<=70 THEN{1212:}BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  5120  PRINT(1179);END;PRINTCMDCHR(CURCMD,CURCHR);PRINTCHAR(39);
  5121  BEGIN HELPPTR:=1;HELPLINE[0]:=1180;END;BACKERROR;GOTO 10;END{:1212};END;
  5122  {1213:}IF(CURCMD<>97)AND(A MOD 4<>0)THEN BEGIN BEGIN IF INTERACTION=3
  5123  THEN;PRINTNL(262);PRINT(685);END;PRINTESC(1171);PRINT(1181);
  5124  PRINTESC(1172);PRINT(1182);PRINTCMDCHR(CURCMD,CURCHR);PRINTCHAR(39);
  5125  BEGIN HELPPTR:=1;HELPLINE[0]:=1183;END;ERROR;END{:1213};
  5126  {1214:}IF EQTB[5306].INT<>0 THEN IF EQTB[5306].INT<0 THEN BEGIN IF(A>=4)
  5127  THEN A:=A-4;END ELSE BEGIN IF NOT(A>=4)THEN A:=A+4;END{:1214};
  5128  CASE CURCMD OF{1217:}87:IF(A>=4)THEN GEQDEFINE(3934,120,CURCHR)ELSE
  5129  EQDEFINE(3934,120,CURCHR);
  5130  {:1217}{1218:}97:BEGIN IF ODD(CURCHR)AND NOT(A>=4)AND(EQTB[5306].INT>=0)
  5131  THEN A:=A+4;E:=(CURCHR>=2);GETRTOKEN;P:=CURCS;Q:=SCANTOKS(TRUE,E);
  5132  IF(A>=4)THEN GEQDEFINE(P,111+(A MOD 4),DEFREF)ELSE EQDEFINE(P,111+(A MOD
  5133  4),DEFREF);END;{:1218}{1221:}94:BEGIN N:=CURCHR;GETRTOKEN;P:=CURCS;
  5134  IF N=0 THEN BEGIN REPEAT GETTOKEN;UNTIL CURCMD<>10;
  5135  IF CURTOK=3133 THEN BEGIN GETTOKEN;IF CURCMD=10 THEN GETTOKEN;END;
  5136  END ELSE BEGIN GETTOKEN;Q:=CURTOK;GETTOKEN;BACKINPUT;CURTOK:=Q;
  5137  BACKINPUT;END;
  5138  IF CURCMD>=111 THEN MEM[CURCHR].HH.LH:=MEM[CURCHR].HH.LH+1;
  5139  IF(A>=4)THEN GEQDEFINE(P,CURCMD,CURCHR)ELSE EQDEFINE(P,CURCMD,CURCHR);
  5140  END;{:1221}{1224:}95:BEGIN N:=CURCHR;GETRTOKEN;P:=CURCS;
  5141  IF(A>=4)THEN GEQDEFINE(P,0,256)ELSE EQDEFINE(P,0,256);
  5142  SCANOPTIONALEQUALS;CASE N OF 0:BEGIN SCANCHARNUM;
  5143  IF(A>=4)THEN GEQDEFINE(P,68,CURVAL)ELSE EQDEFINE(P,68,CURVAL);END;
  5144  1:BEGIN SCANFIFTEENBITINT;
  5145  IF(A>=4)THEN GEQDEFINE(P,69,CURVAL)ELSE EQDEFINE(P,69,CURVAL);END;
  5146  ELSE BEGIN SCANEIGHTBITINT;
  5147  CASE N OF 2:IF(A>=4)THEN GEQDEFINE(P,73,5318+CURVAL)ELSE EQDEFINE(P,73,
  5148  5318+CURVAL);
  5149  3:IF(A>=4)THEN GEQDEFINE(P,74,5851+CURVAL)ELSE EQDEFINE(P,74,5851+CURVAL
  5150  );
  5151  4:IF(A>=4)THEN GEQDEFINE(P,75,2900+CURVAL)ELSE EQDEFINE(P,75,2900+CURVAL
  5152  );
  5153  5:IF(A>=4)THEN GEQDEFINE(P,76,3156+CURVAL)ELSE EQDEFINE(P,76,3156+CURVAL
  5154  );
  5155  6:IF(A>=4)THEN GEQDEFINE(P,72,3422+CURVAL)ELSE EQDEFINE(P,72,3422+CURVAL
  5156  );END;END END;END;{:1224}{1225:}96:BEGIN SCANINT;N:=CURVAL;
  5157  IF NOT SCANKEYWORD(842)THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  5158  PRINTNL(262);PRINT(1073);END;BEGIN HELPPTR:=2;HELPLINE[1]:=1200;
  5159  HELPLINE[0]:=1201;END;ERROR;END;GETRTOKEN;P:=CURCS;READTOKS(N,P);
  5160  IF(A>=4)THEN GEQDEFINE(P,111,CURVAL)ELSE EQDEFINE(P,111,CURVAL);END;
  5161  {:1225}{1226:}71,72:BEGIN Q:=CURCS;
  5162  IF CURCMD=71 THEN BEGIN SCANEIGHTBITINT;P:=3422+CURVAL;
  5163  END ELSE P:=CURCHR;SCANOPTIONALEQUALS;{404:}REPEAT GETXTOKEN;
  5164  UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
  5165  IF CURCMD<>1 THEN{1227:}BEGIN IF CURCMD=71 THEN BEGIN SCANEIGHTBITINT;
  5166  CURCMD:=72;CURCHR:=3422+CURVAL;END;
  5167  IF CURCMD=72 THEN BEGIN Q:=EQTB[CURCHR].HH.RH;
  5168  IF Q=0 THEN IF(A>=4)THEN GEQDEFINE(P,101,0)ELSE EQDEFINE(P,101,0)ELSE
  5169  BEGIN MEM[Q].HH.LH:=MEM[Q].HH.LH+1;
  5170  IF(A>=4)THEN GEQDEFINE(P,111,Q)ELSE EQDEFINE(P,111,Q);END;GOTO 30;END;
  5171  END{:1227};BACKINPUT;CURCS:=Q;Q:=SCANTOKS(FALSE,FALSE);
  5172  IF MEM[DEFREF].HH.RH=0 THEN BEGIN IF(A>=4)THEN GEQDEFINE(P,101,0)ELSE
  5173  EQDEFINE(P,101,0);BEGIN MEM[DEFREF].HH.RH:=AVAIL;AVAIL:=DEFREF;
  5174  {DYNUSED:=DYNUSED-1;}END;
  5175  END ELSE BEGIN IF P=3413 THEN BEGIN MEM[Q].HH.RH:=GETAVAIL;
  5176  Q:=MEM[Q].HH.RH;MEM[Q].HH.LH:=637;Q:=GETAVAIL;MEM[Q].HH.LH:=379;
  5177  MEM[Q].HH.RH:=MEM[DEFREF].HH.RH;MEM[DEFREF].HH.RH:=Q;END;
  5178  IF(A>=4)THEN GEQDEFINE(P,111,DEFREF)ELSE EQDEFINE(P,111,DEFREF);END;END;
  5179  {:1226}{1228:}73:BEGIN P:=CURCHR;SCANOPTIONALEQUALS;SCANINT;
  5180  IF(A>=4)THEN GEQWORDDEFINE(P,CURVAL)ELSE EQWORDDEFINE(P,CURVAL);END;
  5181  74:BEGIN P:=CURCHR;SCANOPTIONALEQUALS;SCANDIMEN(FALSE,FALSE,FALSE);
  5182  IF(A>=4)THEN GEQWORDDEFINE(P,CURVAL)ELSE EQWORDDEFINE(P,CURVAL);END;
  5183  75,76:BEGIN P:=CURCHR;N:=CURCMD;SCANOPTIONALEQUALS;
  5184  IF N=76 THEN SCANGLUE(3)ELSE SCANGLUE(2);TRAPZEROGLUE;
  5185  IF(A>=4)THEN GEQDEFINE(P,117,CURVAL)ELSE EQDEFINE(P,117,CURVAL);END;
  5186  {:1228}{1232:}85:BEGIN{1233:}IF CURCHR=3983 THEN N:=15 ELSE IF CURCHR=
  5187  5007 THEN N:=32768 ELSE IF CURCHR=4751 THEN N:=32767 ELSE IF CURCHR=5574
  5188  THEN N:=16777215 ELSE N:=255{:1233};P:=CURCHR;SCANCHARNUM;P:=P+CURVAL;
  5189  SCANOPTIONALEQUALS;SCANINT;
  5190  IF((CURVAL<0)AND(P<5574))OR(CURVAL>N)THEN BEGIN BEGIN IF INTERACTION=3
  5191  THEN;PRINTNL(262);PRINT(1202);END;PRINTINT(CURVAL);
  5192  IF P<5574 THEN PRINT(1203)ELSE PRINT(1204);PRINTINT(N);BEGIN HELPPTR:=1;
  5193  HELPLINE[0]:=1205;END;ERROR;CURVAL:=0;END;
  5194  IF P<5007 THEN IF(A>=4)THEN GEQDEFINE(P,120,CURVAL)ELSE EQDEFINE(P,120,
  5195  CURVAL)ELSE IF P<5574 THEN IF(A>=4)THEN GEQDEFINE(P,120,CURVAL+0)ELSE
  5196  EQDEFINE(P,120,CURVAL+0)ELSE IF(A>=4)THEN GEQWORDDEFINE(P,CURVAL)ELSE
  5197  EQWORDDEFINE(P,CURVAL);END;{:1232}{1234:}86:BEGIN P:=CURCHR;
  5198  SCANFOURBITINT;P:=P+CURVAL;SCANOPTIONALEQUALS;SCANFONTIDENT;
  5199  IF(A>=4)THEN GEQDEFINE(P,120,CURVAL)ELSE EQDEFINE(P,120,CURVAL);END;
  5200  {:1234}{1235:}89,90,91,92:DOREGISTERCOMMAND(A);
  5201  {:1235}{1241:}98:BEGIN SCANEIGHTBITINT;
  5202  IF(A>=4)THEN N:=256+CURVAL ELSE N:=CURVAL;SCANOPTIONALEQUALS;
  5203  IF SETBOXALLOWED THEN SCANBOX(1073741824+N)ELSE BEGIN BEGIN IF
  5204  INTERACTION=3 THEN;PRINTNL(262);PRINT(680);END;PRINTESC(536);
  5205  BEGIN HELPPTR:=2;HELPLINE[1]:=1211;HELPLINE[0]:=1212;END;ERROR;END;END;
  5206  {:1241}{1242:}79:ALTERAUX;80:ALTERPREVGRAF;81:ALTERPAGESOFAR;
  5207  82:ALTERINTEGER;83:ALTERBOXDIMEN;
  5208  {:1242}{1248:}84:BEGIN SCANOPTIONALEQUALS;SCANINT;N:=CURVAL;
  5209  IF N<=0 THEN P:=0 ELSE BEGIN P:=GETNODE(2*N+1);MEM[P].HH.LH:=N;
  5210  FOR J:=1 TO N DO BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
  5211  MEM[P+2*J-1].INT:=CURVAL;SCANDIMEN(FALSE,FALSE,FALSE);
  5212  MEM[P+2*J].INT:=CURVAL;END;END;
  5213  IF(A>=4)THEN GEQDEFINE(3412,118,P)ELSE EQDEFINE(3412,118,P);END;
  5214  {:1248}{1252:}99:IF CURCHR=1 THEN BEGIN NEWPATTERNS;GOTO 30;
  5215  BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(1216);END;HELPPTR:=0;
  5216  ERROR;REPEAT GETTOKEN;UNTIL CURCMD=2;GOTO 10;
  5217  END ELSE BEGIN NEWHYPHEXCEPTIONS;GOTO 30;END;
  5218  {:1252}{1253:}77:BEGIN FINDFONTDIMEN(TRUE);K:=CURVAL;SCANOPTIONALEQUALS;
  5219  SCANDIMEN(FALSE,FALSE,FALSE);FONTINFO[K].INT:=CURVAL;END;
  5220  78:BEGIN N:=CURCHR;SCANFONTIDENT;F:=CURVAL;SCANOPTIONALEQUALS;SCANINT;
  5221  IF N=0 THEN HYPHENCHAR[F]:=CURVAL ELSE SKEWCHAR[F]:=CURVAL;END;
  5222  {:1253}{1256:}88:NEWFONT(A);{:1256}{1264:}100:NEWINTERACTION;
  5223  {:1264}ELSE CONFUSION(1178)END;
  5224  30:{1269:}IF AFTERTOKEN<>0 THEN BEGIN CURTOK:=AFTERTOKEN;BACKINPUT;
  5225  AFTERTOKEN:=0;END{:1269};10:END;{:1211}{1270:}PROCEDURE DOASSIGNMENTS;
  5226  LABEL 10;BEGIN WHILE TRUE DO BEGIN{404:}REPEAT GETXTOKEN;
  5227  UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};IF CURCMD<=70 THEN GOTO 10;
  5228  SETBOXALLOWED:=FALSE;PREFIXEDCOMMAND;SETBOXALLOWED:=TRUE;END;10:END;
  5229  {:1270}{1275:}PROCEDURE OPENORCLOSEIN;VAR C:0..1;N:0..15;
  5230  BEGIN C:=CURCHR;SCANFOURBITINT;N:=CURVAL;
  5231  IF READOPEN[N]<>2 THEN BEGIN ACLOSE(READFILE[N]);READOPEN[N]:=2;END;
  5232  IF C<>0 THEN BEGIN SCANOPTIONALEQUALS;SCANFILENAME;
  5233  IF CUREXT=338 THEN CUREXT:=791;PACKFILENAME(CURNAME,CURAREA,CUREXT);
  5234  IF AOPENIN(READFILE[N])THEN READOPEN[N]:=1;END;END;
  5235  {:1275}{1279:}PROCEDURE ISSUEMESSAGE;VAR OLDSETTING:0..21;C:0..1;
  5236  S:STRNUMBER;BEGIN C:=CURCHR;MEM[29988].HH.RH:=SCANTOKS(FALSE,TRUE);
  5237  OLDSETTING:=SELECTOR;SELECTOR:=21;TOKENSHOW(DEFREF);
  5238  SELECTOR:=OLDSETTING;FLUSHLIST(DEFREF);
  5239  BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(257,POOLSIZE-INITPOOLPTR);END;
  5240  S:=MAKESTRING;
  5241  IF C=0 THEN{1280:}BEGIN IF TERMOFFSET+(STRSTART[S+1]-STRSTART[S])>
  5242  MAXPRINTLINE-2 THEN PRINTLN ELSE IF(TERMOFFSET>0)OR(FILEOFFSET>0)THEN
  5243  PRINTCHAR(32);SLOWPRINT(S);;
  5244  END{:1280}ELSE{1283:}BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  5245  PRINT(338);END;SLOWPRINT(S);
  5246  IF EQTB[3421].HH.RH<>0 THEN USEERRHELP:=TRUE ELSE IF LONGHELPSEEN THEN
  5247  BEGIN HELPPTR:=1;HELPLINE[0]:=1232;
  5248  END ELSE BEGIN IF INTERACTION<3 THEN LONGHELPSEEN:=TRUE;
  5249  BEGIN HELPPTR:=4;HELPLINE[3]:=1233;HELPLINE[2]:=1234;HELPLINE[1]:=1235;
  5250  HELPLINE[0]:=1236;END;END;ERROR;USEERRHELP:=FALSE;END{:1283};
  5251  BEGIN STRPTR:=STRPTR-1;POOLPTR:=STRSTART[STRPTR];END;END;
  5252  {:1279}{1288:}PROCEDURE SHIFTCASE;VAR B:HALFWORD;P:HALFWORD;T:HALFWORD;
  5253  C:EIGHTBITS;BEGIN B:=CURCHR;P:=SCANTOKS(FALSE,FALSE);
  5254  P:=MEM[DEFREF].HH.RH;WHILE P<>0 DO BEGIN{1289:}T:=MEM[P].HH.LH;
  5255  IF T<4352 THEN BEGIN C:=T MOD 256;
  5256  IF EQTB[B+C].HH.RH<>0 THEN MEM[P].HH.LH:=T-C+EQTB[B+C].HH.RH;END{:1289};
  5257  P:=MEM[P].HH.RH;END;BEGINTOKENLIST(MEM[DEFREF].HH.RH,3);
  5258  BEGIN MEM[DEFREF].HH.RH:=AVAIL;AVAIL:=DEFREF;{DYNUSED:=DYNUSED-1;}END;
  5259  END;{:1288}{1293:}PROCEDURE SHOWWHATEVER;LABEL 50;VAR P:HALFWORD;
  5260  BEGIN IF P=0 THEN;CASE CURCHR OF 3:BEGIN BEGINDIAGNOSTIC;SHOWACTIVITIES;
  5261  END;1:{1296:}BEGIN SCANEIGHTBITINT;BEGINDIAGNOSTIC;PRINTNL(1254);
  5262  PRINTINT(CURVAL);PRINTCHAR(61);
  5263  IF EQTB[3678+CURVAL].HH.RH=0 THEN PRINT(410)ELSE SHOWBOX(EQTB[3678+
  5264  CURVAL].HH.RH);END{:1296};0:{1294:}BEGIN GETTOKEN;IF INTERACTION=3 THEN;
  5265  PRINTNL(1248);IF CURCS<>0 THEN BEGIN SPRINTCS(CURCS);PRINTCHAR(61);END;
  5266  PRINTMEANING;GOTO 50;END{:1294};ELSE{1297:}BEGIN P:=THETOKS;
  5267  IF INTERACTION=3 THEN;PRINTNL(1248);TOKENSHOW(29997);
  5268  FLUSHLIST(MEM[29997].HH.RH);GOTO 50;END{:1297}END;
  5269  {1298:}ENDDIAGNOSTIC(TRUE);BEGIN IF INTERACTION=3 THEN;PRINTNL(262);
  5270  PRINT(1255);END;
  5271  IF SELECTOR=19 THEN IF EQTB[5292].INT<=0 THEN BEGIN SELECTOR:=17;
  5272  PRINT(1256);SELECTOR:=19;END{:1298};
  5273  50:IF INTERACTION<3 THEN BEGIN HELPPTR:=0;ERRORCOUNT:=ERRORCOUNT-1;
  5274  END ELSE IF EQTB[5292].INT>0 THEN BEGIN BEGIN HELPPTR:=3;
  5275  HELPLINE[2]:=1243;HELPLINE[1]:=1244;HELPLINE[0]:=1245;END;
  5276  END ELSE BEGIN BEGIN HELPPTR:=5;HELPLINE[4]:=1243;HELPLINE[3]:=1244;
  5277  HELPLINE[2]:=1245;HELPLINE[1]:=1246;HELPLINE[0]:=1247;END;END;ERROR;END;
  5278  {:1293}{1302:}PROCEDURE STOREFMTFILE;LABEL 41,42,31,32;
  5279  VAR J,K,L:INTEGER;P,Q:HALFWORD;X:INTEGER;W:FOURQUARTERS;
  5280  BEGIN{1304:}IF SAVEPTR<>0 THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  5281  PRINTNL(262);PRINT(1258);END;BEGIN HELPPTR:=1;HELPLINE[0]:=1259;END;
  5282  BEGIN IF INTERACTION=3 THEN INTERACTION:=2;IF LOGOPENED THEN ERROR;
  5283  {IF INTERACTION>0 THEN DEBUGHELP;}HISTORY:=3;JUMPOUT;END;END{:1304};
  5284  {1328:}SELECTOR:=21;PRINT(1272);PRINT(JOBNAME);PRINTCHAR(32);
  5285  PRINTINT(EQTB[5286].INT);PRINTCHAR(46);PRINTINT(EQTB[5285].INT);
  5286  PRINTCHAR(46);PRINTINT(EQTB[5284].INT);PRINTCHAR(41);
  5287  IF INTERACTION=0 THEN SELECTOR:=18 ELSE SELECTOR:=19;
  5288  BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(257,POOLSIZE-INITPOOLPTR);END;
  5289  FORMATIDENT:=MAKESTRING;PACKJOBNAME(786);
  5290  WHILE NOT WOPENOUT(FMTFILE)DO PROMPTFILENAME(1273,786);PRINTNL(1274);
  5291  SLOWPRINT(WMAKENAMESTRING(FMTFILE));BEGIN STRPTR:=STRPTR-1;
  5292  POOLPTR:=STRSTART[STRPTR];END;PRINTNL(338);
  5293  SLOWPRINT(FORMATIDENT){:1328};{1307:}BEGIN FMTFILE^.INT:=504454778;
  5294  PUT(FMTFILE);END;BEGIN FMTFILE^.INT:=0;PUT(FMTFILE);END;
  5295  BEGIN FMTFILE^.INT:=30000;PUT(FMTFILE);END;BEGIN FMTFILE^.INT:=6106;
  5296  PUT(FMTFILE);END;BEGIN FMTFILE^.INT:=1777;PUT(FMTFILE);END;
  5297  BEGIN FMTFILE^.INT:=307;PUT(FMTFILE);END{:1307};
  5298  {1309:}BEGIN FMTFILE^.INT:=POOLPTR;PUT(FMTFILE);END;
  5299  BEGIN FMTFILE^.INT:=STRPTR;PUT(FMTFILE);END;
  5300  FOR K:=0 TO STRPTR DO BEGIN FMTFILE^.INT:=STRSTART[K];PUT(FMTFILE);END;
  5301  K:=0;WHILE K+4<POOLPTR DO BEGIN W.B0:=STRPOOL[K]+0;W.B1:=STRPOOL[K+1]+0;
  5302  W.B2:=STRPOOL[K+2]+0;W.B3:=STRPOOL[K+3]+0;BEGIN FMTFILE^.QQQQ:=W;
  5303  PUT(FMTFILE);END;K:=K+4;END;K:=POOLPTR-4;W.B0:=STRPOOL[K]+0;
  5304  W.B1:=STRPOOL[K+1]+0;W.B2:=STRPOOL[K+2]+0;W.B3:=STRPOOL[K+3]+0;
  5305  BEGIN FMTFILE^.QQQQ:=W;PUT(FMTFILE);END;PRINTLN;PRINTINT(STRPTR);
  5306  PRINT(1260);PRINTINT(POOLPTR){:1309};{1311:}SORTAVAIL;VARUSED:=0;
  5307  BEGIN FMTFILE^.INT:=LOMEMMAX;PUT(FMTFILE);END;BEGIN FMTFILE^.INT:=ROVER;
  5308  PUT(FMTFILE);END;P:=0;Q:=ROVER;X:=0;
  5309  REPEAT FOR K:=P TO Q+1 DO BEGIN FMTFILE^:=MEM[K];PUT(FMTFILE);END;
  5310  X:=X+Q+2-P;VARUSED:=VARUSED+Q-P;P:=Q+MEM[Q].HH.LH;Q:=MEM[Q+1].HH.RH;
  5311  UNTIL Q=ROVER;VARUSED:=VARUSED+LOMEMMAX-P;DYNUSED:=MEMEND+1-HIMEMMIN;
  5312  FOR K:=P TO LOMEMMAX DO BEGIN FMTFILE^:=MEM[K];PUT(FMTFILE);END;
  5313  X:=X+LOMEMMAX+1-P;BEGIN FMTFILE^.INT:=HIMEMMIN;PUT(FMTFILE);END;
  5314  BEGIN FMTFILE^.INT:=AVAIL;PUT(FMTFILE);END;
  5315  FOR K:=HIMEMMIN TO MEMEND DO BEGIN FMTFILE^:=MEM[K];PUT(FMTFILE);END;
  5316  X:=X+MEMEND+1-HIMEMMIN;P:=AVAIL;WHILE P<>0 DO BEGIN DYNUSED:=DYNUSED-1;
  5317  P:=MEM[P].HH.RH;END;BEGIN FMTFILE^.INT:=VARUSED;PUT(FMTFILE);END;
  5318  BEGIN FMTFILE^.INT:=DYNUSED;PUT(FMTFILE);END;PRINTLN;PRINTINT(X);
  5319  PRINT(1261);PRINTINT(VARUSED);PRINTCHAR(38);PRINTINT(DYNUSED){:1311};
  5320  {1313:}{1315:}K:=1;REPEAT J:=K;
  5321  WHILE J<5262 DO BEGIN IF(EQTB[J].HH.RH=EQTB[J+1].HH.RH)AND(EQTB[J].HH.B0
  5322  =EQTB[J+1].HH.B0)AND(EQTB[J].HH.B1=EQTB[J+1].HH.B1)THEN GOTO 41;J:=J+1;
  5323  END;L:=5263;GOTO 31;41:J:=J+1;L:=J;
  5324  WHILE J<5262 DO BEGIN IF(EQTB[J].HH.RH<>EQTB[J+1].HH.RH)OR(EQTB[J].HH.B0
  5325  <>EQTB[J+1].HH.B0)OR(EQTB[J].HH.B1<>EQTB[J+1].HH.B1)THEN GOTO 31;J:=J+1;
  5326  END;31:BEGIN FMTFILE^.INT:=L-K;PUT(FMTFILE);END;
  5327  WHILE K<L DO BEGIN BEGIN FMTFILE^:=EQTB[K];PUT(FMTFILE);END;K:=K+1;END;
  5328  K:=J+1;BEGIN FMTFILE^.INT:=K-L;PUT(FMTFILE);END;UNTIL K=5263{:1315};
  5329  {1316:}REPEAT J:=K;
  5330  WHILE J<6106 DO BEGIN IF EQTB[J].INT=EQTB[J+1].INT THEN GOTO 42;J:=J+1;
  5331  END;L:=6107;GOTO 32;42:J:=J+1;L:=J;
  5332  WHILE J<6106 DO BEGIN IF EQTB[J].INT<>EQTB[J+1].INT THEN GOTO 32;J:=J+1;
  5333  END;32:BEGIN FMTFILE^.INT:=L-K;PUT(FMTFILE);END;
  5334  WHILE K<L DO BEGIN BEGIN FMTFILE^:=EQTB[K];PUT(FMTFILE);END;K:=K+1;END;
  5335  K:=J+1;BEGIN FMTFILE^.INT:=K-L;PUT(FMTFILE);END;UNTIL K>6106{:1316};
  5336  BEGIN FMTFILE^.INT:=PARLOC;PUT(FMTFILE);END;
  5337  BEGIN FMTFILE^.INT:=WRITELOC;PUT(FMTFILE);END;
  5338  {1318:}BEGIN FMTFILE^.INT:=HASHUSED;PUT(FMTFILE);END;
  5339  CSCOUNT:=2613-HASHUSED;
  5340  FOR P:=514 TO HASHUSED DO IF HASH[P].RH<>0 THEN BEGIN BEGIN FMTFILE^.INT
  5341  :=P;PUT(FMTFILE);END;BEGIN FMTFILE^.HH:=HASH[P];PUT(FMTFILE);END;
  5342  CSCOUNT:=CSCOUNT+1;END;
  5343  FOR P:=HASHUSED+1 TO 2880 DO BEGIN FMTFILE^.HH:=HASH[P];PUT(FMTFILE);
  5344  END;BEGIN FMTFILE^.INT:=CSCOUNT;PUT(FMTFILE);END;PRINTLN;
  5345  PRINTINT(CSCOUNT);PRINT(1262){:1318}{:1313};
  5346  {1320:}BEGIN FMTFILE^.INT:=FMEMPTR;PUT(FMTFILE);END;
  5347  FOR K:=0 TO FMEMPTR-1 DO BEGIN FMTFILE^:=FONTINFO[K];PUT(FMTFILE);END;
  5348  BEGIN FMTFILE^.INT:=FONTPTR;PUT(FMTFILE);END;
  5349  FOR K:=0 TO FONTPTR DO{1322:}BEGIN BEGIN FMTFILE^.QQQQ:=FONTCHECK[K];
  5350  PUT(FMTFILE);END;BEGIN FMTFILE^.INT:=FONTSIZE[K];PUT(FMTFILE);END;
  5351  BEGIN FMTFILE^.INT:=FONTDSIZE[K];PUT(FMTFILE);END;
  5352  BEGIN FMTFILE^.INT:=FONTPARAMS[K];PUT(FMTFILE);END;
  5353  BEGIN FMTFILE^.INT:=HYPHENCHAR[K];PUT(FMTFILE);END;
  5354  BEGIN FMTFILE^.INT:=SKEWCHAR[K];PUT(FMTFILE);END;
  5355  BEGIN FMTFILE^.INT:=FONTNAME[K];PUT(FMTFILE);END;
  5356  BEGIN FMTFILE^.INT:=FONTAREA[K];PUT(FMTFILE);END;
  5357  BEGIN FMTFILE^.INT:=FONTBC[K];PUT(FMTFILE);END;
  5358  BEGIN FMTFILE^.INT:=FONTEC[K];PUT(FMTFILE);END;
  5359  BEGIN FMTFILE^.INT:=CHARBASE[K];PUT(FMTFILE);END;
  5360  BEGIN FMTFILE^.INT:=WIDTHBASE[K];PUT(FMTFILE);END;
  5361  BEGIN FMTFILE^.INT:=HEIGHTBASE[K];PUT(FMTFILE);END;
  5362  BEGIN FMTFILE^.INT:=DEPTHBASE[K];PUT(FMTFILE);END;
  5363  BEGIN FMTFILE^.INT:=ITALICBASE[K];PUT(FMTFILE);END;
  5364  BEGIN FMTFILE^.INT:=LIGKERNBASE[K];PUT(FMTFILE);END;
  5365  BEGIN FMTFILE^.INT:=KERNBASE[K];PUT(FMTFILE);END;
  5366  BEGIN FMTFILE^.INT:=EXTENBASE[K];PUT(FMTFILE);END;
  5367  BEGIN FMTFILE^.INT:=PARAMBASE[K];PUT(FMTFILE);END;
  5368  BEGIN FMTFILE^.INT:=FONTGLUE[K];PUT(FMTFILE);END;
  5369  BEGIN FMTFILE^.INT:=BCHARLABEL[K];PUT(FMTFILE);END;
  5370  BEGIN FMTFILE^.INT:=FONTBCHAR[K];PUT(FMTFILE);END;
  5371  BEGIN FMTFILE^.INT:=FONTFALSEBCHAR[K];PUT(FMTFILE);END;PRINTNL(1265);
  5372  PRINTESC(HASH[2624+K].RH);PRINTCHAR(61);
  5373  PRINTFILENAME(FONTNAME[K],FONTAREA[K],338);
  5374  IF FONTSIZE[K]<>FONTDSIZE[K]THEN BEGIN PRINT(741);
  5375  PRINTSCALED(FONTSIZE[K]);PRINT(397);END;END{:1322};PRINTLN;
  5376  PRINTINT(FMEMPTR-7);PRINT(1263);PRINTINT(FONTPTR-0);PRINT(1264);
  5377  IF FONTPTR<>1 THEN PRINTCHAR(115){:1320};
  5378  {1324:}BEGIN FMTFILE^.INT:=HYPHCOUNT;PUT(FMTFILE);END;
  5379  FOR K:=0 TO 307 DO IF HYPHWORD[K]<>0 THEN BEGIN BEGIN FMTFILE^.INT:=K;
  5380  PUT(FMTFILE);END;BEGIN FMTFILE^.INT:=HYPHWORD[K];PUT(FMTFILE);END;
  5381  BEGIN FMTFILE^.INT:=HYPHLIST[K];PUT(FMTFILE);END;END;PRINTLN;
  5382  PRINTINT(HYPHCOUNT);PRINT(1266);IF HYPHCOUNT<>1 THEN PRINTCHAR(115);
  5383  IF TRIENOTREADY THEN INITTRIE;BEGIN FMTFILE^.INT:=TRIEMAX;PUT(FMTFILE);
  5384  END;FOR K:=0 TO TRIEMAX DO BEGIN FMTFILE^.HH:=TRIE[K];PUT(FMTFILE);END;
  5385  BEGIN FMTFILE^.INT:=TRIEOPPTR;PUT(FMTFILE);END;
  5386  FOR K:=1 TO TRIEOPPTR DO BEGIN BEGIN FMTFILE^.INT:=HYFDISTANCE[K];
  5387  PUT(FMTFILE);END;BEGIN FMTFILE^.INT:=HYFNUM[K];PUT(FMTFILE);END;
  5388  BEGIN FMTFILE^.INT:=HYFNEXT[K];PUT(FMTFILE);END;END;PRINTNL(1267);
  5389  PRINTINT(TRIEMAX);PRINT(1268);PRINTINT(TRIEOPPTR);PRINT(1269);
  5390  IF TRIEOPPTR<>1 THEN PRINTCHAR(115);PRINT(1270);PRINTINT(TRIEOPSIZE);
  5391  FOR K:=255 DOWNTO 0 DO IF TRIEUSED[K]>0 THEN BEGIN PRINTNL(800);
  5392  PRINTINT(TRIEUSED[K]-0);PRINT(1271);PRINTINT(K);BEGIN FMTFILE^.INT:=K;
  5393  PUT(FMTFILE);END;BEGIN FMTFILE^.INT:=TRIEUSED[K]-0;PUT(FMTFILE);END;
  5394  END{:1324};{1326:}BEGIN FMTFILE^.INT:=INTERACTION;PUT(FMTFILE);END;
  5395  BEGIN FMTFILE^.INT:=FORMATIDENT;PUT(FMTFILE);END;
  5396  BEGIN FMTFILE^.INT:=69069;PUT(FMTFILE);END;EQTB[5294].INT:=0{:1326};
  5397  {1329:}WCLOSE(FMTFILE){:1329};END;
  5398  {:1302}{1348:}{1349:}PROCEDURE NEWWHATSIT(S:SMALLNUMBER;W:SMALLNUMBER);
  5399  VAR P:HALFWORD;BEGIN P:=GETNODE(W);MEM[P].HH.B0:=8;MEM[P].HH.B1:=S;
  5400  MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;END;
  5401  {:1349}{1350:}PROCEDURE NEWWRITEWHATSIT(W:SMALLNUMBER);
  5402  BEGIN NEWWHATSIT(CURCHR,W);
  5403  IF W<>2 THEN SCANFOURBITINT ELSE BEGIN SCANINT;
  5404  IF CURVAL<0 THEN CURVAL:=17 ELSE IF CURVAL>15 THEN CURVAL:=16;END;
  5405  MEM[CURLIST.TAILFIELD+1].HH.LH:=CURVAL;END;{:1350}PROCEDURE DOEXTENSION;
  5406  VAR K:INTEGER;P:HALFWORD;
  5407  BEGIN CASE CURCHR OF 0:{1351:}BEGIN NEWWRITEWHATSIT(3);
  5408  SCANOPTIONALEQUALS;SCANFILENAME;MEM[CURLIST.TAILFIELD+1].HH.RH:=CURNAME;
  5409  MEM[CURLIST.TAILFIELD+2].HH.LH:=CURAREA;
  5410  MEM[CURLIST.TAILFIELD+2].HH.RH:=CUREXT;END{:1351};
  5411  1:{1352:}BEGIN K:=CURCS;NEWWRITEWHATSIT(2);CURCS:=K;
  5412  P:=SCANTOKS(FALSE,FALSE);MEM[CURLIST.TAILFIELD+1].HH.RH:=DEFREF;
  5413  END{:1352};2:{1353:}BEGIN NEWWRITEWHATSIT(2);
  5414  MEM[CURLIST.TAILFIELD+1].HH.RH:=0;END{:1353};
  5415  3:{1354:}BEGIN NEWWHATSIT(3,2);MEM[CURLIST.TAILFIELD+1].HH.LH:=0;
  5416  P:=SCANTOKS(FALSE,TRUE);MEM[CURLIST.TAILFIELD+1].HH.RH:=DEFREF;
  5417  END{:1354};4:{1375:}BEGIN GETXTOKEN;
  5418  IF(CURCMD=59)AND(CURCHR<=2)THEN BEGIN P:=CURLIST.TAILFIELD;DOEXTENSION;
  5419  OUTWHAT(CURLIST.TAILFIELD);FLUSHNODELIST(CURLIST.TAILFIELD);
  5420  CURLIST.TAILFIELD:=P;MEM[P].HH.RH:=0;END ELSE BACKINPUT;END{:1375};
  5421  5:{1377:}IF ABS(CURLIST.MODEFIELD)<>102 THEN REPORTILLEGALCASE ELSE
  5422  BEGIN NEWWHATSIT(4,2);SCANINT;
  5423  IF CURVAL<=0 THEN CURLIST.AUXFIELD.HH.RH:=0 ELSE IF CURVAL>255 THEN
  5424  CURLIST.AUXFIELD.HH.RH:=0 ELSE CURLIST.AUXFIELD.HH.RH:=CURVAL;
  5425  MEM[CURLIST.TAILFIELD+1].HH.RH:=CURLIST.AUXFIELD.HH.RH;
  5426  MEM[CURLIST.TAILFIELD+1].HH.B0:=NORMMIN(EQTB[5314].INT);
  5427  MEM[CURLIST.TAILFIELD+1].HH.B1:=NORMMIN(EQTB[5315].INT);END{:1377};
  5428  ELSE CONFUSION(1291)END;END;{:1348}{1376:}PROCEDURE FIXLANGUAGE;
  5429  VAR L:ASCIICODE;
  5430  BEGIN IF EQTB[5313].INT<=0 THEN L:=0 ELSE IF EQTB[5313].INT>255 THEN L:=
  5431  0 ELSE L:=EQTB[5313].INT;
  5432  IF L<>CURLIST.AUXFIELD.HH.RH THEN BEGIN NEWWHATSIT(4,2);
  5433  MEM[CURLIST.TAILFIELD+1].HH.RH:=L;CURLIST.AUXFIELD.HH.RH:=L;
  5434  MEM[CURLIST.TAILFIELD+1].HH.B0:=NORMMIN(EQTB[5314].INT);
  5435  MEM[CURLIST.TAILFIELD+1].HH.B1:=NORMMIN(EQTB[5315].INT);END;END;
  5436  {:1376}{1068:}PROCEDURE HANDLERIGHTBRACE;VAR P,Q:HALFWORD;D:SCALED;
  5437  F:INTEGER;BEGIN CASE CURGROUP OF 1:UNSAVE;
  5438  0:BEGIN BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(1044);END;
  5439  BEGIN HELPPTR:=2;HELPLINE[1]:=1045;HELPLINE[0]:=1046;END;ERROR;END;
  5440  14,15,16:EXTRARIGHTBRACE;{1085:}2:PACKAGE(0);3:BEGIN ADJUSTTAIL:=29995;
  5441  PACKAGE(0);END;4:BEGIN ENDGRAF;PACKAGE(0);END;5:BEGIN ENDGRAF;
  5442  PACKAGE(4);END;{:1085}{1100:}11:BEGIN ENDGRAF;Q:=EQTB[2892].HH.RH;
  5443  MEM[Q].HH.RH:=MEM[Q].HH.RH+1;D:=EQTB[5836].INT;F:=EQTB[5305].INT;UNSAVE;
  5444  SAVEPTR:=SAVEPTR-1;
  5445  P:=VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,0,1,1073741823);POPNEST;
  5446  IF SAVESTACK[SAVEPTR+0].INT<255 THEN BEGIN BEGIN MEM[CURLIST.TAILFIELD].
  5447  HH.RH:=GETNODE(5);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  5448  MEM[CURLIST.TAILFIELD].HH.B0:=3;
  5449  MEM[CURLIST.TAILFIELD].HH.B1:=SAVESTACK[SAVEPTR+0].INT+0;
  5450  MEM[CURLIST.TAILFIELD+3].INT:=MEM[P+3].INT+MEM[P+2].INT;
  5451  MEM[CURLIST.TAILFIELD+4].HH.LH:=MEM[P+5].HH.RH;
  5452  MEM[CURLIST.TAILFIELD+4].HH.RH:=Q;MEM[CURLIST.TAILFIELD+2].INT:=D;
  5453  MEM[CURLIST.TAILFIELD+1].INT:=F;
  5454  END ELSE BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=GETNODE(2);
  5455  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  5456  MEM[CURLIST.TAILFIELD].HH.B0:=5;MEM[CURLIST.TAILFIELD].HH.B1:=0;
  5457  MEM[CURLIST.TAILFIELD+1].INT:=MEM[P+5].HH.RH;DELETEGLUEREF(Q);END;
  5458  FREENODE(P,7);IF NESTPTR=0 THEN BUILDPAGE;END;
  5459  8:{1026:}BEGIN IF(CURINPUT.LOCFIELD<>0)OR((CURINPUT.INDEXFIELD<>6)AND(
  5460  CURINPUT.INDEXFIELD<>3))THEN{1027:}BEGIN BEGIN IF INTERACTION=3 THEN;
  5461  PRINTNL(262);PRINT(1010);END;BEGIN HELPPTR:=2;HELPLINE[1]:=1011;
  5462  HELPLINE[0]:=1012;END;ERROR;REPEAT GETTOKEN;UNTIL CURINPUT.LOCFIELD=0;
  5463  END{:1027};ENDTOKENLIST;ENDGRAF;UNSAVE;OUTPUTACTIVE:=FALSE;
  5464  INSERTPENALTIES:=0;
  5465  {1028:}IF EQTB[3933].HH.RH<>0 THEN BEGIN BEGIN IF INTERACTION=3 THEN;
  5466  PRINTNL(262);PRINT(1013);END;PRINTESC(409);PRINTINT(255);
  5467  BEGIN HELPPTR:=3;HELPLINE[2]:=1014;HELPLINE[1]:=1015;HELPLINE[0]:=1016;
  5468  END;BOXERROR(255);END{:1028};
  5469  IF CURLIST.TAILFIELD<>CURLIST.HEADFIELD THEN BEGIN MEM[PAGETAIL].HH.RH:=
  5470  MEM[CURLIST.HEADFIELD].HH.RH;PAGETAIL:=CURLIST.TAILFIELD;END;
  5471  IF MEM[29998].HH.RH<>0 THEN BEGIN IF MEM[29999].HH.RH=0 THEN NEST[0].
  5472  TAILFIELD:=PAGETAIL;MEM[PAGETAIL].HH.RH:=MEM[29999].HH.RH;
  5473  MEM[29999].HH.RH:=MEM[29998].HH.RH;MEM[29998].HH.RH:=0;PAGETAIL:=29998;
  5474  END;POPNEST;BUILDPAGE;END{:1026};{:1100}{1118:}10:BUILDDISCRETIONARY;
  5475  {:1118}{1132:}6:BEGIN BACKINPUT;CURTOK:=6710;
  5476  BEGIN IF INTERACTION=3 THEN;PRINTNL(262);PRINT(625);END;PRINTESC(899);
  5477  PRINT(626);BEGIN HELPPTR:=1;HELPLINE[0]:=1125;END;INSERROR;END;
  5478  {:1132}{1133:}7:BEGIN ENDGRAF;UNSAVE;ALIGNPEEK;END;
  5479  {:1133}{1168:}12:BEGIN ENDGRAF;UNSAVE;SAVEPTR:=SAVEPTR-2;
  5480  P:=VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,SAVESTACK[SAVEPTR+1].INT,
  5481  SAVESTACK[SAVEPTR+0].INT,1073741823);POPNEST;
  5482  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
  5483  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  5484  MEM[CURLIST.TAILFIELD].HH.B0:=29;MEM[CURLIST.TAILFIELD+1].HH.RH:=2;
  5485  MEM[CURLIST.TAILFIELD+1].HH.LH:=P;END;{:1168}{1173:}13:BUILDCHOICES;
  5486  {:1173}{1186:}9:BEGIN UNSAVE;SAVEPTR:=SAVEPTR-1;
  5487  MEM[SAVESTACK[SAVEPTR+0].INT].HH.RH:=3;P:=FINMLIST(0);
  5488  MEM[SAVESTACK[SAVEPTR+0].INT].HH.LH:=P;
  5489  IF P<>0 THEN IF MEM[P].HH.RH=0 THEN IF MEM[P].HH.B0=16 THEN BEGIN IF MEM
  5490  [P+3].HH.RH=0 THEN IF MEM[P+2].HH.RH=0 THEN BEGIN MEM[SAVESTACK[SAVEPTR
  5491  +0].INT].HH:=MEM[P+1].HH;FREENODE(P,4);END;
  5492  END ELSE IF MEM[P].HH.B0=28 THEN IF SAVESTACK[SAVEPTR+0].INT=CURLIST.
  5493  TAILFIELD+1 THEN IF MEM[CURLIST.TAILFIELD].HH.B0=16 THEN{1187:}BEGIN Q:=
  5494  CURLIST.HEADFIELD;
  5495  WHILE MEM[Q].HH.RH<>CURLIST.TAILFIELD DO Q:=MEM[Q].HH.RH;
  5496  MEM[Q].HH.RH:=P;FREENODE(CURLIST.TAILFIELD,4);CURLIST.TAILFIELD:=P;
  5497  END{:1187};END;{:1186}ELSE CONFUSION(1047)END;END;
  5498  {:1068}PROCEDURE MAINCONTROL;
  5499  LABEL 60,21,70,80,90,91,92,95,100,101,110,111,112,120,10;VAR T:INTEGER;
  5500  BEGIN IF EQTB[3419].HH.RH<>0 THEN BEGINTOKENLIST(EQTB[3419].HH.RH,12);
  5501  60:GETXTOKEN;
  5502  21:{1031:}IF INTERRUPT<>0 THEN IF OKTOINTERRUPT THEN BEGIN BACKINPUT;
  5503  BEGIN IF INTERRUPT<>0 THEN PAUSEFORINSTRUCTIONS;END;GOTO 60;END;
  5504  {IF PANICKING THEN CHECKMEM(FALSE);}
  5505  IF EQTB[5299].INT>0 THEN SHOWCURCMDCHR{:1031};
  5506  CASE ABS(CURLIST.MODEFIELD)+CURCMD OF 113,114,170:GOTO 70;
  5507  118:BEGIN SCANCHARNUM;CURCHR:=CURVAL;GOTO 70;END;167:BEGIN GETXTOKEN;
  5508  IF(CURCMD=11)OR(CURCMD=12)OR(CURCMD=68)OR(CURCMD=16)THEN CANCELBOUNDARY
  5509  :=TRUE;GOTO 21;END;
  5510  112:IF CURLIST.AUXFIELD.HH.LH=1000 THEN GOTO 120 ELSE APPSPACE;
  5511  166,267:GOTO 120;{1045:}1,102,203,11,213,268:;
  5512  40,141,242:BEGIN{406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};GOTO 21;
  5513  END;15:IF ITSALLOVER THEN GOTO 10;
  5514  {1048:}23,123,224,71,172,273,{:1048}{1098:}39,{:1098}{1111:}45,{:1111}
  5515  {1144:}49,150,{:1144}7,108,209:REPORTILLEGALCASE;
  5516  {1046:}8,109,9,110,18,119,70,171,51,152,16,117,50,151,53,154,67,168,54,
  5517  155,55,156,57,158,56,157,31,132,52,153,29,130,47,148,212,216,217,230,227
  5518  ,236,239{:1046}:INSERTDOLLARSIGN;
  5519  {1056:}37,137,238:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=SCANRULESPEC
  5520  ;CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  5521  IF ABS(CURLIST.MODEFIELD)=1 THEN CURLIST.AUXFIELD.INT:=-65536000 ELSE IF
  5522  ABS(CURLIST.MODEFIELD)=102 THEN CURLIST.AUXFIELD.HH.LH:=1000;END;
  5523  {:1056}{1057:}28,128,229,231:APPENDGLUE;30,131,232,233:APPENDKERN;
  5524  {:1057}{1063:}2,103:NEWSAVELEVEL(1);62,163,264:NEWSAVELEVEL(14);
  5525  63,164,265:IF CURGROUP=14 THEN UNSAVE ELSE OFFSAVE;
  5526  {:1063}{1067:}3,104,205:HANDLERIGHTBRACE;
  5527  {:1067}{1073:}22,124,225:BEGIN T:=CURCHR;SCANDIMEN(FALSE,FALSE,FALSE);
  5528  IF T=0 THEN SCANBOX(CURVAL)ELSE SCANBOX(-CURVAL);END;
  5529  32,133,234:SCANBOX(1073742237+CURCHR);21,122,223:BEGINBOX(0);
  5530  {:1073}{1090:}44:NEWGRAF(CURCHR>0);
  5531  12,13,17,69,4,24,36,46,48,27,34,65,66:BEGIN BACKINPUT;NEWGRAF(TRUE);END;
  5532  {:1090}{1092:}145,246:INDENTINHMODE;
  5533  {:1092}{1094:}14:BEGIN NORMALPARAGRAPH;
  5534  IF CURLIST.MODEFIELD>0 THEN BUILDPAGE;END;
  5535  115:BEGIN IF ALIGNSTATE<0 THEN OFFSAVE;ENDGRAF;
  5536  IF CURLIST.MODEFIELD=1 THEN BUILDPAGE;END;
  5537  116,129,138,126,134:HEADFORVMODE;
  5538  {:1094}{1097:}38,139,240,140,241:BEGININSERTORADJUST;
  5539  19,120,221:MAKEMARK;{:1097}{1102:}43,144,245:APPENDPENALTY;
  5540  {:1102}{1104:}26,127,228:DELETELAST;{:1104}{1109:}25,125,226:UNPACKAGE;
  5541  {:1109}{1112:}146:APPENDITALICCORRECTION;
  5542  247:BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(0);
  5543  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  5544  {:1112}{1116:}149,250:APPENDDISCRETIONARY;{:1116}{1122:}147:MAKEACCENT;
  5545  {:1122}{1126:}6,107,208,5,106,207:ALIGNERROR;35,136,237:NOALIGNERROR;
  5546  64,165,266:OMITERROR;{:1126}{1130:}33,135:INITALIGN;
  5547  235:IF PRIVILEGED THEN IF CURGROUP=15 THEN INITALIGN ELSE OFFSAVE;
  5548  10,111:DOENDV;{:1130}{1134:}68,169,270:CSERROR;
  5549  {:1134}{1137:}105:INITMATH;
  5550  {:1137}{1140:}251:IF PRIVILEGED THEN IF CURGROUP=15 THEN STARTEQNO ELSE
  5551  OFFSAVE;
  5552  {:1140}{1150:}204:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
  5553  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;BACKINPUT;
  5554  SCANMATH(CURLIST.TAILFIELD+1);END;
  5555  {:1150}{1154:}214,215,271:SETMATHCHAR(EQTB[5007+CURCHR].HH.RH-0);
  5556  219:BEGIN SCANCHARNUM;CURCHR:=CURVAL;
  5557  SETMATHCHAR(EQTB[5007+CURCHR].HH.RH-0);END;220:BEGIN SCANFIFTEENBITINT;
  5558  SETMATHCHAR(CURVAL);END;272:SETMATHCHAR(CURCHR);
  5559  218:BEGIN SCANTWENTYSEVENBITINT;SETMATHCHAR(CURVAL DIV 4096);END;
  5560  {:1154}{1158:}253:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
  5561  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  5562  MEM[CURLIST.TAILFIELD].HH.B0:=CURCHR;SCANMATH(CURLIST.TAILFIELD+1);END;
  5563  254:MATHLIMITSWITCH;{:1158}{1162:}269:MATHRADICAL;
  5564  {:1162}{1164:}248,249:MATHAC;{:1164}{1167:}259:BEGIN SCANSPEC(12,FALSE);
  5565  NORMALPARAGRAPH;PUSHNEST;CURLIST.MODEFIELD:=-1;
  5566  CURLIST.AUXFIELD.INT:=-65536000;
  5567  IF EQTB[3418].HH.RH<>0 THEN BEGINTOKENLIST(EQTB[3418].HH.RH,11);END;
  5568  {:1167}{1171:}256:BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWSTYLE(CURCHR);
  5569  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  5570  258:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(0);
  5571  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
  5572  MEM[CURLIST.TAILFIELD].HH.B1:=98;END;257:APPENDCHOICES;
  5573  {:1171}{1175:}211,210:SUBSUP;{:1175}{1180:}255:MATHFRACTION;
  5574  {:1180}{1190:}252:MATHLEFTRIGHT;
  5575  {:1190}{1193:}206:IF CURGROUP=15 THEN AFTERMATH ELSE OFFSAVE;
  5576  {:1193}{1210:}72,173,274,73,174,275,74,175,276,75,176,277,76,177,278,77,
  5577  178,279,78,179,280,79,180,281,80,181,282,81,182,283,82,183,284,83,184,
  5578  285,84,185,286,85,186,287,86,187,288,87,188,289,88,189,290,89,190,291,90
  5579  ,191,292,91,192,293,92,193,294,93,194,295,94,195,296,95,196,297,96,197,
  5580  298,97,198,299,98,199,300,99,200,301,100,201,302,101,202,303:
  5581  PREFIXEDCOMMAND;{:1210}{1268:}41,142,243:BEGIN GETTOKEN;
  5582  AFTERTOKEN:=CURTOK;END;{:1268}{1271:}42,143,244:BEGIN GETTOKEN;
  5583  SAVEFORAFTER(CURTOK);END;{:1271}{1274:}61,162,263:OPENORCLOSEIN;
  5584  {:1274}{1276:}59,160,261:ISSUEMESSAGE;
  5585  {:1276}{1285:}58,159,260:SHIFTCASE;
  5586  {:1285}{1290:}20,121,222:SHOWWHATEVER;
  5587  {:1290}{1347:}60,161,262:DOEXTENSION;{:1347}{:1045}END;GOTO 60;
  5588  70:{1034:}MAINS:=EQTB[4751+CURCHR].HH.RH;
  5589  IF MAINS=1000 THEN CURLIST.AUXFIELD.HH.LH:=1000 ELSE IF MAINS<1000 THEN
  5590  BEGIN IF MAINS>0 THEN CURLIST.AUXFIELD.HH.LH:=MAINS;
  5591  END ELSE IF CURLIST.AUXFIELD.HH.LH<1000 THEN CURLIST.AUXFIELD.HH.LH:=
  5592  1000 ELSE CURLIST.AUXFIELD.HH.LH:=MAINS;MAINF:=EQTB[3934].HH.RH;
  5593  BCHAR:=FONTBCHAR[MAINF];FALSEBCHAR:=FONTFALSEBCHAR[MAINF];
  5594  IF CURLIST.MODEFIELD>0 THEN IF EQTB[5313].INT<>CURLIST.AUXFIELD.HH.RH
  5595  THEN FIXLANGUAGE;BEGIN LIGSTACK:=AVAIL;
  5596  IF LIGSTACK=0 THEN LIGSTACK:=GETAVAIL ELSE BEGIN AVAIL:=MEM[LIGSTACK].HH
  5597  .RH;MEM[LIGSTACK].HH.RH:=0;{DYNUSED:=DYNUSED+1;}END;END;
  5598  MEM[LIGSTACK].HH.B0:=MAINF;CURL:=CURCHR+0;MEM[LIGSTACK].HH.B1:=CURL;
  5599  CURQ:=CURLIST.TAILFIELD;
  5600  IF CANCELBOUNDARY THEN BEGIN CANCELBOUNDARY:=FALSE;MAINK:=0;
  5601  END ELSE MAINK:=BCHARLABEL[MAINF];IF MAINK=0 THEN GOTO 92;CURR:=CURL;
  5602  CURL:=256;GOTO 111;
  5603  80:{1035:}IF CURL<256 THEN BEGIN IF MEM[CURQ].HH.RH>0 THEN IF MEM[
  5604  CURLIST.TAILFIELD].HH.B1=HYPHENCHAR[MAINF]+0 THEN INSDISC:=TRUE;
  5605  IF LIGATUREPRESENT THEN BEGIN MAINP:=NEWLIGATURE(MAINF,CURL,MEM[CURQ].HH
  5606  .RH);IF LFTHIT THEN BEGIN MEM[MAINP].HH.B1:=2;LFTHIT:=FALSE;END;
  5607  IF RTHIT THEN IF LIGSTACK=0 THEN BEGIN MEM[MAINP].HH.B1:=MEM[MAINP].HH.
  5608  B1+1;RTHIT:=FALSE;END;MEM[CURQ].HH.RH:=MAINP;CURLIST.TAILFIELD:=MAINP;
  5609  LIGATUREPRESENT:=FALSE;END;IF INSDISC THEN BEGIN INSDISC:=FALSE;
  5610  IF CURLIST.MODEFIELD>0 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWDISC;
  5611  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;END;END{:1035};
  5612  90:{1036:}IF LIGSTACK=0 THEN GOTO 21;CURQ:=CURLIST.TAILFIELD;
  5613  CURL:=MEM[LIGSTACK].HH.B1;91:IF NOT(LIGSTACK>=HIMEMMIN)THEN GOTO 95;
  5614  92:IF(CURCHR<FONTBC[MAINF])OR(CURCHR>FONTEC[MAINF])THEN BEGIN
  5615  CHARWARNING(MAINF,CURCHR);BEGIN MEM[LIGSTACK].HH.RH:=AVAIL;
  5616  AVAIL:=LIGSTACK;{DYNUSED:=DYNUSED-1;}END;GOTO 60;END;
  5617  MAINI:=FONTINFO[CHARBASE[MAINF]+CURL].QQQQ;
  5618  IF NOT(MAINI.B0>0)THEN BEGIN CHARWARNING(MAINF,CURCHR);
  5619  BEGIN MEM[LIGSTACK].HH.RH:=AVAIL;AVAIL:=LIGSTACK;{DYNUSED:=DYNUSED-1;}
  5620  END;GOTO 60;END;MEM[CURLIST.TAILFIELD].HH.RH:=LIGSTACK;
  5621  CURLIST.TAILFIELD:=LIGSTACK{:1036};100:{1038:}GETNEXT;
  5622  IF CURCMD=11 THEN GOTO 101;IF CURCMD=12 THEN GOTO 101;
  5623  IF CURCMD=68 THEN GOTO 101;XTOKEN;IF CURCMD=11 THEN GOTO 101;
  5624  IF CURCMD=12 THEN GOTO 101;IF CURCMD=68 THEN GOTO 101;
  5625  IF CURCMD=16 THEN BEGIN SCANCHARNUM;CURCHR:=CURVAL;GOTO 101;END;
  5626  IF CURCMD=65 THEN BCHAR:=256;CURR:=BCHAR;LIGSTACK:=0;GOTO 110;
  5627  101:MAINS:=EQTB[4751+CURCHR].HH.RH;
  5628  IF MAINS=1000 THEN CURLIST.AUXFIELD.HH.LH:=1000 ELSE IF MAINS<1000 THEN
  5629  BEGIN IF MAINS>0 THEN CURLIST.AUXFIELD.HH.LH:=MAINS;
  5630  END ELSE IF CURLIST.AUXFIELD.HH.LH<1000 THEN CURLIST.AUXFIELD.HH.LH:=
  5631  1000 ELSE CURLIST.AUXFIELD.HH.LH:=MAINS;BEGIN LIGSTACK:=AVAIL;
  5632  IF LIGSTACK=0 THEN LIGSTACK:=GETAVAIL ELSE BEGIN AVAIL:=MEM[LIGSTACK].HH
  5633  .RH;MEM[LIGSTACK].HH.RH:=0;{DYNUSED:=DYNUSED+1;}END;END;
  5634  MEM[LIGSTACK].HH.B0:=MAINF;CURR:=CURCHR+0;MEM[LIGSTACK].HH.B1:=CURR;
  5635  IF CURR=FALSEBCHAR THEN CURR:=256{:1038};
  5636  110:{1039:}IF((MAINI.B2-0)MOD 4)<>1 THEN GOTO 80;
  5637  IF CURR=256 THEN GOTO 80;MAINK:=LIGKERNBASE[MAINF]+MAINI.B3;
  5638  MAINJ:=FONTINFO[MAINK].QQQQ;IF MAINJ.B0<=128 THEN GOTO 112;
  5639  MAINK:=LIGKERNBASE[MAINF]+256*MAINJ.B2+MAINJ.B3+32768-256*(128);
  5640  111:MAINJ:=FONTINFO[MAINK].QQQQ;
  5641  112:IF MAINJ.B1=CURR THEN IF MAINJ.B0<=128 THEN{1040:}BEGIN IF MAINJ.B2
  5642  >=128 THEN BEGIN IF CURL<256 THEN BEGIN IF MEM[CURQ].HH.RH>0 THEN IF MEM
  5643  [CURLIST.TAILFIELD].HH.B1=HYPHENCHAR[MAINF]+0 THEN INSDISC:=TRUE;
  5644  IF LIGATUREPRESENT THEN BEGIN MAINP:=NEWLIGATURE(MAINF,CURL,MEM[CURQ].HH
  5645  .RH);IF LFTHIT THEN BEGIN MEM[MAINP].HH.B1:=2;LFTHIT:=FALSE;END;
  5646  IF RTHIT THEN IF LIGSTACK=0 THEN BEGIN MEM[MAINP].HH.B1:=MEM[MAINP].HH.
  5647  B1+1;RTHIT:=FALSE;END;MEM[CURQ].HH.RH:=MAINP;CURLIST.TAILFIELD:=MAINP;
  5648  LIGATUREPRESENT:=FALSE;END;IF INSDISC THEN BEGIN INSDISC:=FALSE;
  5649  IF CURLIST.MODEFIELD>0 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWDISC;
  5650  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;END;END;
  5651  BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(FONTINFO[KERNBASE[MAINF]+256
  5652  *MAINJ.B2+MAINJ.B3].INT);
  5653  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;GOTO 90;END;
  5654  IF CURL=256 THEN LFTHIT:=TRUE ELSE IF LIGSTACK=0 THEN RTHIT:=TRUE;
  5655  BEGIN IF INTERRUPT<>0 THEN PAUSEFORINSTRUCTIONS;END;
  5656  CASE MAINJ.B2 OF 1,5:BEGIN CURL:=MAINJ.B3;
  5657  MAINI:=FONTINFO[CHARBASE[MAINF]+CURL].QQQQ;LIGATUREPRESENT:=TRUE;END;
  5658  2,6:BEGIN CURR:=MAINJ.B3;
  5659  IF LIGSTACK=0 THEN BEGIN LIGSTACK:=NEWLIGITEM(CURR);BCHAR:=256;
  5660  END ELSE IF(LIGSTACK>=HIMEMMIN)THEN BEGIN MAINP:=LIGSTACK;
  5661  LIGSTACK:=NEWLIGITEM(CURR);MEM[LIGSTACK+1].HH.RH:=MAINP;
  5662  END ELSE MEM[LIGSTACK].HH.B1:=CURR;END;3:BEGIN CURR:=MAINJ.B3;
  5663  MAINP:=LIGSTACK;LIGSTACK:=NEWLIGITEM(CURR);MEM[LIGSTACK].HH.RH:=MAINP;
  5664  END;7,11:BEGIN IF CURL<256 THEN BEGIN IF MEM[CURQ].HH.RH>0 THEN IF MEM[
  5665  CURLIST.TAILFIELD].HH.B1=HYPHENCHAR[MAINF]+0 THEN INSDISC:=TRUE;
  5666  IF LIGATUREPRESENT THEN BEGIN MAINP:=NEWLIGATURE(MAINF,CURL,MEM[CURQ].HH
  5667  .RH);IF LFTHIT THEN BEGIN MEM[MAINP].HH.B1:=2;LFTHIT:=FALSE;END;
  5668  IF FALSE THEN IF LIGSTACK=0 THEN BEGIN MEM[MAINP].HH.B1:=MEM[MAINP].HH.
  5669  B1+1;RTHIT:=FALSE;END;MEM[CURQ].HH.RH:=MAINP;CURLIST.TAILFIELD:=MAINP;
  5670  LIGATUREPRESENT:=FALSE;END;IF INSDISC THEN BEGIN INSDISC:=FALSE;
  5671  IF CURLIST.MODEFIELD>0 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWDISC;
  5672  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;END;END;
  5673  CURQ:=CURLIST.TAILFIELD;CURL:=MAINJ.B3;
  5674  MAINI:=FONTINFO[CHARBASE[MAINF]+CURL].QQQQ;LIGATUREPRESENT:=TRUE;END;
  5675  ELSE BEGIN CURL:=MAINJ.B3;LIGATUREPRESENT:=TRUE;
  5676  IF LIGSTACK=0 THEN GOTO 80 ELSE GOTO 91;END END;
  5677  IF MAINJ.B2>4 THEN IF MAINJ.B2<>7 THEN GOTO 80;
  5678  IF CURL<256 THEN GOTO 110;MAINK:=BCHARLABEL[MAINF];GOTO 111;END{:1040};
  5679  IF MAINJ.B0=0 THEN MAINK:=MAINK+1 ELSE BEGIN IF MAINJ.B0>=128 THEN GOTO
  5680  80;MAINK:=MAINK+MAINJ.B0+1;END;GOTO 111{:1039};
  5681  95:{1037:}MAINP:=MEM[LIGSTACK+1].HH.RH;
  5682  IF MAINP>0 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=MAINP;
  5683  CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;TEMPPTR:=LIGSTACK;
  5684  LIGSTACK:=MEM[TEMPPTR].HH.RH;FREENODE(TEMPPTR,2);
  5685  MAINI:=FONTINFO[CHARBASE[MAINF]+CURL].QQQQ;LIGATUREPRESENT:=TRUE;
  5686  IF LIGSTACK=0 THEN IF MAINP>0 THEN GOTO 100 ELSE CURR:=BCHAR ELSE CURR:=
  5687  MEM[LIGSTACK].HH.B1;GOTO 110{:1037}{:1034};
  5688  120:{1041:}IF EQTB[2894].HH.RH=0 THEN BEGIN{1042:}BEGIN MAINP:=FONTGLUE[
  5689  EQTB[3934].HH.RH];IF MAINP=0 THEN BEGIN MAINP:=NEWSPEC(0);
  5690  MAINK:=PARAMBASE[EQTB[3934].HH.RH]+2;
  5691  MEM[MAINP+1].INT:=FONTINFO[MAINK].INT;
  5692  MEM[MAINP+2].INT:=FONTINFO[MAINK+1].INT;
  5693  MEM[MAINP+3].INT:=FONTINFO[MAINK+2].INT;
  5694  FONTGLUE[EQTB[3934].HH.RH]:=MAINP;END;END{:1042};
  5695  TEMPPTR:=NEWGLUE(MAINP);END ELSE TEMPPTR:=NEWPARAMGLUE(12);
  5696  MEM[CURLIST.TAILFIELD].HH.RH:=TEMPPTR;CURLIST.TAILFIELD:=TEMPPTR;
  5697  GOTO 60{:1041};10:END;{:1030}{1284:}PROCEDURE GIVEERRHELP;
  5698  BEGIN TOKENSHOW(EQTB[3421].HH.RH);END;
  5699  {:1284}{1303:}{524:}FUNCTION OPENFMTFILE:BOOLEAN;LABEL 40,10;
  5700  VAR J:0..BUFSIZE;BEGIN J:=CURINPUT.LOCFIELD;
  5701  IF BUFFER[CURINPUT.LOCFIELD]=38 THEN BEGIN CURINPUT.LOCFIELD:=CURINPUT.
  5702  LOCFIELD+1;J:=CURINPUT.LOCFIELD;BUFFER[LAST]:=32;
  5703  WHILE BUFFER[J]<>32 DO J:=J+1;PACKBUFFEREDNAME(0,CURINPUT.LOCFIELD,J-1);
  5704  IF WOPENIN(FMTFILE)THEN GOTO 40;
  5705  PACKBUFFEREDNAME(11,CURINPUT.LOCFIELD,J-1);
  5706  IF WOPENIN(FMTFILE)THEN GOTO 40;;
  5707  WRITELN(TERMOUT,'Sorry, I can''t find that format;',' will try PLAIN.');
  5708  ;END;PACKBUFFEREDNAME(16,1,0);IF NOT WOPENIN(FMTFILE)THEN BEGIN;
  5709  WRITELN(TERMOUT,'I can''t find the PLAIN format file!');
  5710  OPENFMTFILE:=FALSE;GOTO 10;END;40:CURINPUT.LOCFIELD:=J;
  5711  OPENFMTFILE:=TRUE;10:END;{:524}FUNCTION LOADFMTFILE:BOOLEAN;
  5712  LABEL 6666,10;VAR J,K:INTEGER;P,Q:HALFWORD;X:INTEGER;W:FOURQUARTERS;
  5713  BEGIN{1308:}READ(FMTFILE,X);IF X<>504454778 THEN GOTO 6666;
  5714  BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;IF X<>0 THEN GOTO 6666;
  5715  BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;IF X<>30000 THEN GOTO 6666;
  5716  BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;IF X<>6106 THEN GOTO 6666;
  5717  BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;IF X<>1777 THEN GOTO 6666;
  5718  BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;IF X<>307 THEN GOTO 6666{:1308};
  5719  {1310:}BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5720  IF X<0 THEN GOTO 6666;IF X>POOLSIZE THEN BEGIN;
  5721  WRITELN(TERMOUT,'---! Must increase the ','string pool size');GOTO 6666;
  5722  END ELSE POOLPTR:=X;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5723  IF X<0 THEN GOTO 6666;IF X>MAXSTRINGS THEN BEGIN;
  5724  WRITELN(TERMOUT,'---! Must increase the ','max strings');GOTO 6666;
  5725  END ELSE STRPTR:=X;END;FOR K:=0 TO STRPTR DO BEGIN BEGIN GET(FMTFILE);
  5726  X:=FMTFILE^.INT;END;
  5727  IF(X<0)OR(X>POOLPTR)THEN GOTO 6666 ELSE STRSTART[K]:=X;END;K:=0;
  5728  WHILE K+4<POOLPTR DO BEGIN BEGIN GET(FMTFILE);W:=FMTFILE^.QQQQ;END;
  5729  STRPOOL[K]:=W.B0-0;STRPOOL[K+1]:=W.B1-0;STRPOOL[K+2]:=W.B2-0;
  5730  STRPOOL[K+3]:=W.B3-0;K:=K+4;END;K:=POOLPTR-4;BEGIN GET(FMTFILE);
  5731  W:=FMTFILE^.QQQQ;END;STRPOOL[K]:=W.B0-0;STRPOOL[K+1]:=W.B1-0;
  5732  STRPOOL[K+2]:=W.B2-0;STRPOOL[K+3]:=W.B3-0;INITSTRPTR:=STRPTR;
  5733  INITPOOLPTR:=POOLPTR{:1310};{1312:}BEGIN BEGIN GET(FMTFILE);
  5734  X:=FMTFILE^.INT;END;
  5735  IF(X<1019)OR(X>29986)THEN GOTO 6666 ELSE LOMEMMAX:=X;END;
  5736  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5737  IF(X<20)OR(X>LOMEMMAX)THEN GOTO 6666 ELSE ROVER:=X;END;P:=0;Q:=ROVER;
  5738  REPEAT FOR K:=P TO Q+1 DO BEGIN GET(FMTFILE);MEM[K]:=FMTFILE^;END;
  5739  P:=Q+MEM[Q].HH.LH;
  5740  IF(P>LOMEMMAX)OR((Q>=MEM[Q+1].HH.RH)AND(MEM[Q+1].HH.RH<>ROVER))THEN GOTO
  5741  6666;Q:=MEM[Q+1].HH.RH;UNTIL Q=ROVER;
  5742  FOR K:=P TO LOMEMMAX DO BEGIN GET(FMTFILE);MEM[K]:=FMTFILE^;END;
  5743  IF MEMMIN<-2 THEN BEGIN P:=MEM[ROVER+1].HH.LH;Q:=MEMMIN+1;
  5744  MEM[MEMMIN].HH.RH:=0;MEM[MEMMIN].HH.LH:=0;MEM[P+1].HH.RH:=Q;
  5745  MEM[ROVER+1].HH.LH:=Q;MEM[Q+1].HH.RH:=ROVER;MEM[Q+1].HH.LH:=P;
  5746  MEM[Q].HH.RH:=65535;MEM[Q].HH.LH:=-0-Q;END;BEGIN BEGIN GET(FMTFILE);
  5747  X:=FMTFILE^.INT;END;
  5748  IF(X<LOMEMMAX+1)OR(X>29987)THEN GOTO 6666 ELSE HIMEMMIN:=X;END;
  5749  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5750  IF(X<0)OR(X>30000)THEN GOTO 6666 ELSE AVAIL:=X;END;MEMEND:=30000;
  5751  FOR K:=HIMEMMIN TO MEMEND DO BEGIN GET(FMTFILE);MEM[K]:=FMTFILE^;END;
  5752  BEGIN GET(FMTFILE);VARUSED:=FMTFILE^.INT;END;BEGIN GET(FMTFILE);
  5753  DYNUSED:=FMTFILE^.INT;END{:1312};{1314:}{1317:}K:=1;
  5754  REPEAT BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5755  IF(X<1)OR(K+X>6107)THEN GOTO 6666;
  5756  FOR J:=K TO K+X-1 DO BEGIN GET(FMTFILE);EQTB[J]:=FMTFILE^;END;K:=K+X;
  5757  BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5758  IF(X<0)OR(K+X>6107)THEN GOTO 6666;
  5759  FOR J:=K TO K+X-1 DO EQTB[J]:=EQTB[K-1];K:=K+X;UNTIL K>6106{:1317};
  5760  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5761  IF(X<514)OR(X>2614)THEN GOTO 6666 ELSE PARLOC:=X;END;
  5762  PARTOKEN:=4095+PARLOC;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5763  IF(X<514)OR(X>2614)THEN GOTO 6666 ELSE WRITELOC:=X;END;
  5764  {1319:}BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5765  IF(X<514)OR(X>2614)THEN GOTO 6666 ELSE HASHUSED:=X;END;P:=513;
  5766  REPEAT BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5767  IF(X<P+1)OR(X>HASHUSED)THEN GOTO 6666 ELSE P:=X;END;BEGIN GET(FMTFILE);
  5768  HASH[P]:=FMTFILE^.HH;END;UNTIL P=HASHUSED;
  5769  FOR P:=HASHUSED+1 TO 2880 DO BEGIN GET(FMTFILE);HASH[P]:=FMTFILE^.HH;
  5770  END;BEGIN GET(FMTFILE);CSCOUNT:=FMTFILE^.INT;END{:1319}{:1314};
  5771  {1321:}BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5772  IF X<7 THEN GOTO 6666;IF X>FONTMEMSIZE THEN BEGIN;
  5773  WRITELN(TERMOUT,'---! Must increase the ','font mem size');GOTO 6666;
  5774  END ELSE FMEMPTR:=X;END;FOR K:=0 TO FMEMPTR-1 DO BEGIN GET(FMTFILE);
  5775  FONTINFO[K]:=FMTFILE^;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5776  IF X<0 THEN GOTO 6666;IF X>FONTMAX THEN BEGIN;
  5777  WRITELN(TERMOUT,'---! Must increase the ','font max');GOTO 6666;
  5778  END ELSE FONTPTR:=X;END;
  5779  FOR K:=0 TO FONTPTR DO{1323:}BEGIN BEGIN GET(FMTFILE);
  5780  FONTCHECK[K]:=FMTFILE^.QQQQ;END;BEGIN GET(FMTFILE);
  5781  FONTSIZE[K]:=FMTFILE^.INT;END;BEGIN GET(FMTFILE);
  5782  FONTDSIZE[K]:=FMTFILE^.INT;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;
  5783  END;IF(X<0)OR(X>65535)THEN GOTO 6666 ELSE FONTPARAMS[K]:=X;END;
  5784  BEGIN GET(FMTFILE);HYPHENCHAR[K]:=FMTFILE^.INT;END;BEGIN GET(FMTFILE);
  5785  SKEWCHAR[K]:=FMTFILE^.INT;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;
  5786  END;IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE FONTNAME[K]:=X;END;
  5787  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5788  IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE FONTAREA[K]:=X;END;
  5789  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5790  IF(X<0)OR(X>255)THEN GOTO 6666 ELSE FONTBC[K]:=X;END;
  5791  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5792  IF(X<0)OR(X>255)THEN GOTO 6666 ELSE FONTEC[K]:=X;END;BEGIN GET(FMTFILE);
  5793  CHARBASE[K]:=FMTFILE^.INT;END;BEGIN GET(FMTFILE);
  5794  WIDTHBASE[K]:=FMTFILE^.INT;END;BEGIN GET(FMTFILE);
  5795  HEIGHTBASE[K]:=FMTFILE^.INT;END;BEGIN GET(FMTFILE);
  5796  DEPTHBASE[K]:=FMTFILE^.INT;END;BEGIN GET(FMTFILE);
  5797  ITALICBASE[K]:=FMTFILE^.INT;END;BEGIN GET(FMTFILE);
  5798  LIGKERNBASE[K]:=FMTFILE^.INT;END;BEGIN GET(FMTFILE);
  5799  KERNBASE[K]:=FMTFILE^.INT;END;BEGIN GET(FMTFILE);
  5800  EXTENBASE[K]:=FMTFILE^.INT;END;BEGIN GET(FMTFILE);
  5801  PARAMBASE[K]:=FMTFILE^.INT;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;
  5802  END;IF(X<0)OR(X>LOMEMMAX)THEN GOTO 6666 ELSE FONTGLUE[K]:=X;END;
  5803  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5804  IF(X<0)OR(X>FMEMPTR-1)THEN GOTO 6666 ELSE BCHARLABEL[K]:=X;END;
  5805  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5806  IF(X<0)OR(X>256)THEN GOTO 6666 ELSE FONTBCHAR[K]:=X;END;
  5807  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5808  IF(X<0)OR(X>256)THEN GOTO 6666 ELSE FONTFALSEBCHAR[K]:=X;END;
  5809  END{:1323}{:1321};{1325:}BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5810  IF(X<0)OR(X>307)THEN GOTO 6666 ELSE HYPHCOUNT:=X;END;
  5811  FOR K:=1 TO HYPHCOUNT DO BEGIN BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;
  5812  END;IF(X<0)OR(X>307)THEN GOTO 6666 ELSE J:=X;END;
  5813  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5814  IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE HYPHWORD[J]:=X;END;
  5815  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5816  IF(X<0)OR(X>65535)THEN GOTO 6666 ELSE HYPHLIST[J]:=X;END;END;
  5817  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;IF X<0 THEN GOTO 6666;
  5818  IF X>TRIESIZE THEN BEGIN;
  5819  WRITELN(TERMOUT,'---! Must increase the ','trie size');GOTO 6666;
  5820  END ELSE J:=X;END;TRIEMAX:=J;FOR K:=0 TO J DO BEGIN GET(FMTFILE);
  5821  TRIE[K]:=FMTFILE^.HH;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5822  IF X<0 THEN GOTO 6666;IF X>TRIEOPSIZE THEN BEGIN;
  5823  WRITELN(TERMOUT,'---! Must increase the ','trie op size');GOTO 6666;
  5824  END ELSE J:=X;END;TRIEOPPTR:=J;
  5825  FOR K:=1 TO J DO BEGIN BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5826  IF(X<0)OR(X>63)THEN GOTO 6666 ELSE HYFDISTANCE[K]:=X;END;
  5827  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5828  IF(X<0)OR(X>63)THEN GOTO 6666 ELSE HYFNUM[K]:=X;END;
  5829  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5830  IF(X<0)OR(X>255)THEN GOTO 6666 ELSE HYFNEXT[K]:=X;END;END;
  5831  FOR K:=0 TO 255 DO TRIEUSED[K]:=0;K:=256;
  5832  WHILE J>0 DO BEGIN BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5833  IF(X<0)OR(X>K-1)THEN GOTO 6666 ELSE K:=X;END;BEGIN BEGIN GET(FMTFILE);
  5834  X:=FMTFILE^.INT;END;IF(X<1)OR(X>J)THEN GOTO 6666 ELSE X:=X;END;
  5835  TRIEUSED[K]:=X+0;J:=J-X;OPSTART[K]:=J-0;END;TRIENOTREADY:=FALSE{:1325};
  5836  {1327:}BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5837  IF(X<0)OR(X>3)THEN GOTO 6666 ELSE INTERACTION:=X;END;
  5838  BEGIN BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5839  IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE FORMATIDENT:=X;END;
  5840  BEGIN GET(FMTFILE);X:=FMTFILE^.INT;END;
  5841  IF(X<>69069)OR EOF(FMTFILE)THEN GOTO 6666{:1327};LOADFMTFILE:=TRUE;
  5842  GOTO 10;6666:;
  5843  WRITELN(TERMOUT,'(Fatal format file error; I''m stymied)');
  5844  LOADFMTFILE:=FALSE;10:END;
  5845  {:1303}{1330:}{1333:}PROCEDURE CLOSEFILESANDTERMINATE;VAR K:INTEGER;
  5846  BEGIN{1378:}FOR K:=0 TO 15 DO IF WRITEOPEN[K]THEN ACLOSE(WRITEFILE[K])
  5847  {:1378};EQTB[5312].INT:=-1;
  5848  {IF EQTB[5294].INT>0 THEN[1334:]IF LOGOPENED THEN BEGIN WRITELN(LOGFILE,
  5849  ' ');WRITELN(LOGFILE,'Here is how much of TeX''s memory',' you used:');
  5850  WRITE(LOGFILE,' ',STRPTR-INITSTRPTR:1,' string');
  5851  IF STRPTR<>INITSTRPTR+1 THEN WRITE(LOGFILE,'s');
  5852  WRITELN(LOGFILE,' out of ',MAXSTRINGS-INITSTRPTR:1);
  5853  WRITELN(LOGFILE,' ',POOLPTR-INITPOOLPTR:1,' string characters out of ',
  5854  POOLSIZE-INITPOOLPTR:1);
  5855  WRITELN(LOGFILE,' ',LOMEMMAX-MEMMIN+MEMEND-HIMEMMIN+2:1,
  5856  ' words of memory out of ',MEMEND+1-MEMMIN:1);
  5857  WRITELN(LOGFILE,' ',CSCOUNT:1,' multiletter control sequences out of ',
  5858  2100:1);
  5859  WRITE(LOGFILE,' ',FMEMPTR:1,' words of font info for ',FONTPTR-0:1,
  5860  ' font');IF FONTPTR<>1 THEN WRITE(LOGFILE,'s');
  5861  WRITELN(LOGFILE,', out of ',FONTMEMSIZE:1,' for ',FONTMAX-0:1);
  5862  WRITE(LOGFILE,' ',HYPHCOUNT:1,' hyphenation exception');
  5863  IF HYPHCOUNT<>1 THEN WRITE(LOGFILE,'s');
  5864  WRITELN(LOGFILE,' out of ',307:1);
  5865  WRITELN(LOGFILE,' ',MAXINSTACK:1,'i,',MAXNESTSTACK:1,'n,',MAXPARAMSTACK:
  5866  1,'p,',MAXBUFSTACK+1:1,'b,',MAXSAVESTACK+6:1,'s stack positions out of '
  5867  ,STACKSIZE:1,'i,',NESTSIZE:1,'n,',PARAMSIZE:1,'p,',BUFSIZE:1,'b,',
  5868  SAVESIZE:1,'s');END[:1334];};
  5869  {642:}WHILE CURS>-1 DO BEGIN IF CURS>0 THEN BEGIN DVIBUF[DVIPTR]:=142;
  5870  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;
  5871  END ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=140;DVIPTR:=DVIPTR+1;
  5872  IF DVIPTR=DVILIMIT THEN DVISWAP;END;TOTALPAGES:=TOTALPAGES+1;END;
  5873  CURS:=CURS-1;END;
  5874  IF TOTALPAGES=0 THEN PRINTNL(837)ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=248;
  5875  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(LASTBOP);
  5876  LASTBOP:=DVIOFFSET+DVIPTR-5;DVIFOUR(25400000);DVIFOUR(473628672);
  5877  PREPAREMAG;DVIFOUR(EQTB[5280].INT);DVIFOUR(MAXV);DVIFOUR(MAXH);
  5878  BEGIN DVIBUF[DVIPTR]:=MAXPUSH DIV 256;DVIPTR:=DVIPTR+1;
  5879  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  5880  BEGIN DVIBUF[DVIPTR]:=MAXPUSH MOD 256;DVIPTR:=DVIPTR+1;
  5881  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  5882  BEGIN DVIBUF[DVIPTR]:=(TOTALPAGES DIV 256)MOD 256;DVIPTR:=DVIPTR+1;
  5883  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  5884  BEGIN DVIBUF[DVIPTR]:=TOTALPAGES MOD 256;DVIPTR:=DVIPTR+1;
  5885  IF DVIPTR=DVILIMIT THEN DVISWAP;END;
  5886  {643:}WHILE FONTPTR>0 DO BEGIN IF FONTUSED[FONTPTR]THEN DVIFONTDEF(
  5887  FONTPTR);FONTPTR:=FONTPTR-1;END{:643};BEGIN DVIBUF[DVIPTR]:=249;
  5888  DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(LASTBOP);
  5889  BEGIN DVIBUF[DVIPTR]:=2;DVIPTR:=DVIPTR+1;
  5890  IF DVIPTR=DVILIMIT THEN DVISWAP;END;K:=4+((DVIBUFSIZE-DVIPTR)MOD 4);
  5891  WHILE K>0 DO BEGIN BEGIN DVIBUF[DVIPTR]:=223;DVIPTR:=DVIPTR+1;
  5892  IF DVIPTR=DVILIMIT THEN DVISWAP;END;K:=K-1;END;
  5893  {599:}IF DVILIMIT=HALFBUF THEN WRITEDVI(HALFBUF,DVIBUFSIZE-1);
  5894  IF DVIPTR>0 THEN WRITEDVI(0,DVIPTR-1){:599};PRINTNL(838);
  5895  SLOWPRINT(OUTPUTFILENAME);PRINT(286);PRINTINT(TOTALPAGES);PRINT(839);
  5896  IF TOTALPAGES<>1 THEN PRINTCHAR(115);PRINT(840);
  5897  PRINTINT(DVIOFFSET+DVIPTR);PRINT(841);BCLOSE(DVIFILE);END{:642};
  5898  IF LOGOPENED THEN BEGIN WRITELN(LOGFILE);ACLOSE(LOGFILE);
  5899  SELECTOR:=SELECTOR-2;IF SELECTOR=17 THEN BEGIN PRINTNL(1275);
  5900  SLOWPRINT(LOGNAME);PRINTCHAR(46);END;END;END;
  5901  {:1333}{1335:}PROCEDURE FINALCLEANUP;LABEL 10;VAR C:SMALLNUMBER;
  5902  BEGIN C:=CURCHR;IF C<>1 THEN EQTB[5312].INT:=-1;
  5903  IF JOBNAME=0 THEN OPENLOGFILE;
  5904  WHILE INPUTPTR>0 DO IF CURINPUT.STATEFIELD=0 THEN ENDTOKENLIST ELSE
  5905  ENDFILEREADING;WHILE OPENPARENS>0 DO BEGIN PRINT(1276);
  5906  OPENPARENS:=OPENPARENS-1;END;IF CURLEVEL>1 THEN BEGIN PRINTNL(40);
  5907  PRINTESC(1277);PRINT(1278);PRINTINT(CURLEVEL-1);PRINTCHAR(41);END;
  5908  WHILE CONDPTR<>0 DO BEGIN PRINTNL(40);PRINTESC(1277);PRINT(1279);
  5909  PRINTCMDCHR(105,CURIF);IF IFLINE<>0 THEN BEGIN PRINT(1280);
  5910  PRINTINT(IFLINE);END;PRINT(1281);IFLINE:=MEM[CONDPTR+1].INT;
  5911  CURIF:=MEM[CONDPTR].HH.B1;TEMPPTR:=CONDPTR;CONDPTR:=MEM[CONDPTR].HH.RH;
  5912  FREENODE(TEMPPTR,2);END;
  5913  IF HISTORY<>0 THEN IF((HISTORY=1)OR(INTERACTION<3))THEN IF SELECTOR=19
  5914  THEN BEGIN SELECTOR:=17;PRINTNL(1282);SELECTOR:=19;END;
  5915  IF C=1 THEN BEGIN FOR C:=0 TO 4 DO IF CURMARK[C]<>0 THEN DELETETOKENREF(
  5916  CURMARK[C]);IF LASTGLUE<>65535 THEN DELETEGLUEREF(LASTGLUE);
  5917  STOREFMTFILE;GOTO 10;PRINTNL(1283);GOTO 10;END;10:END;
  5918  {:1335}{1336:}PROCEDURE INITPRIM;BEGIN NONEWCONTROLSEQUENCE:=FALSE;
  5919  {226:}PRIMITIVE(376,75,2882);PRIMITIVE(377,75,2883);
  5920  PRIMITIVE(378,75,2884);PRIMITIVE(379,75,2885);PRIMITIVE(380,75,2886);
  5921  PRIMITIVE(381,75,2887);PRIMITIVE(382,75,2888);PRIMITIVE(383,75,2889);
  5922  PRIMITIVE(384,75,2890);PRIMITIVE(385,75,2891);PRIMITIVE(386,75,2892);
  5923  PRIMITIVE(387,75,2893);PRIMITIVE(388,75,2894);PRIMITIVE(389,75,2895);
  5924  PRIMITIVE(390,75,2896);PRIMITIVE(391,76,2897);PRIMITIVE(392,76,2898);
  5925  PRIMITIVE(393,76,2899);{:226}{230:}PRIMITIVE(398,72,3413);
  5926  PRIMITIVE(399,72,3414);PRIMITIVE(400,72,3415);PRIMITIVE(401,72,3416);
  5927  PRIMITIVE(402,72,3417);PRIMITIVE(403,72,3418);PRIMITIVE(404,72,3419);
  5928  PRIMITIVE(405,72,3420);PRIMITIVE(406,72,3421);
  5929  {:230}{238:}PRIMITIVE(420,73,5263);PRIMITIVE(421,73,5264);
  5930  PRIMITIVE(422,73,5265);PRIMITIVE(423,73,5266);PRIMITIVE(424,73,5267);
  5931  PRIMITIVE(425,73,5268);PRIMITIVE(426,73,5269);PRIMITIVE(427,73,5270);
  5932  PRIMITIVE(428,73,5271);PRIMITIVE(429,73,5272);PRIMITIVE(430,73,5273);
  5933  PRIMITIVE(431,73,5274);PRIMITIVE(432,73,5275);PRIMITIVE(433,73,5276);
  5934  PRIMITIVE(434,73,5277);PRIMITIVE(435,73,5278);PRIMITIVE(436,73,5279);
  5935  PRIMITIVE(437,73,5280);PRIMITIVE(438,73,5281);PRIMITIVE(439,73,5282);
  5936  PRIMITIVE(440,73,5283);PRIMITIVE(441,73,5284);PRIMITIVE(442,73,5285);
  5937  PRIMITIVE(443,73,5286);PRIMITIVE(444,73,5287);PRIMITIVE(445,73,5288);
  5938  PRIMITIVE(446,73,5289);PRIMITIVE(447,73,5290);PRIMITIVE(448,73,5291);
  5939  PRIMITIVE(449,73,5292);PRIMITIVE(450,73,5293);PRIMITIVE(451,73,5294);
  5940  PRIMITIVE(452,73,5295);PRIMITIVE(453,73,5296);PRIMITIVE(454,73,5297);
  5941  PRIMITIVE(455,73,5298);PRIMITIVE(456,73,5299);PRIMITIVE(457,73,5300);
  5942  PRIMITIVE(458,73,5301);PRIMITIVE(459,73,5302);PRIMITIVE(460,73,5303);
  5943  PRIMITIVE(461,73,5304);PRIMITIVE(462,73,5305);PRIMITIVE(463,73,5306);
  5944  PRIMITIVE(464,73,5307);PRIMITIVE(465,73,5308);PRIMITIVE(466,73,5309);
  5945  PRIMITIVE(467,73,5310);PRIMITIVE(468,73,5311);PRIMITIVE(469,73,5312);
  5946  PRIMITIVE(470,73,5313);PRIMITIVE(471,73,5314);PRIMITIVE(472,73,5315);
  5947  PRIMITIVE(473,73,5316);PRIMITIVE(474,73,5317);
  5948  {:238}{248:}PRIMITIVE(478,74,5830);PRIMITIVE(479,74,5831);
  5949  PRIMITIVE(480,74,5832);PRIMITIVE(481,74,5833);PRIMITIVE(482,74,5834);
  5950  PRIMITIVE(483,74,5835);PRIMITIVE(484,74,5836);PRIMITIVE(485,74,5837);
  5951  PRIMITIVE(486,74,5838);PRIMITIVE(487,74,5839);PRIMITIVE(488,74,5840);
  5952  PRIMITIVE(489,74,5841);PRIMITIVE(490,74,5842);PRIMITIVE(491,74,5843);
  5953  PRIMITIVE(492,74,5844);PRIMITIVE(493,74,5845);PRIMITIVE(494,74,5846);
  5954  PRIMITIVE(495,74,5847);PRIMITIVE(496,74,5848);PRIMITIVE(497,74,5849);
  5955  PRIMITIVE(498,74,5850);{:248}{265:}PRIMITIVE(32,64,0);
  5956  PRIMITIVE(47,44,0);PRIMITIVE(508,45,0);PRIMITIVE(509,90,0);
  5957  PRIMITIVE(510,40,0);PRIMITIVE(511,41,0);PRIMITIVE(512,61,0);
  5958  PRIMITIVE(513,16,0);PRIMITIVE(504,107,0);PRIMITIVE(514,15,0);
  5959  PRIMITIVE(515,92,0);PRIMITIVE(505,67,0);PRIMITIVE(516,62,0);
  5960  HASH[2616].RH:=516;EQTB[2616]:=EQTB[CURVAL];PRIMITIVE(517,102,0);
  5961  PRIMITIVE(518,88,0);PRIMITIVE(519,77,0);PRIMITIVE(520,32,0);
  5962  PRIMITIVE(521,36,0);PRIMITIVE(522,39,0);PRIMITIVE(330,37,0);
  5963  PRIMITIVE(351,18,0);PRIMITIVE(523,46,0);PRIMITIVE(524,17,0);
  5964  PRIMITIVE(525,54,0);PRIMITIVE(526,91,0);PRIMITIVE(527,34,0);
  5965  PRIMITIVE(528,65,0);PRIMITIVE(529,103,0);PRIMITIVE(335,55,0);
  5966  PRIMITIVE(530,63,0);PRIMITIVE(408,84,0);PRIMITIVE(531,42,0);
  5967  PRIMITIVE(532,80,0);PRIMITIVE(533,66,0);PRIMITIVE(534,96,0);
  5968  PRIMITIVE(535,0,256);HASH[2621].RH:=535;EQTB[2621]:=EQTB[CURVAL];
  5969  PRIMITIVE(536,98,0);PRIMITIVE(537,109,0);PRIMITIVE(407,71,0);
  5970  PRIMITIVE(352,38,0);PRIMITIVE(538,33,0);PRIMITIVE(539,56,0);
  5971  PRIMITIVE(540,35,0);{:265}{334:}PRIMITIVE(597,13,256);PARLOC:=CURVAL;
  5972  PARTOKEN:=4095+PARLOC;{:334}{376:}PRIMITIVE(629,104,0);
  5973  PRIMITIVE(630,104,1);{:376}{384:}PRIMITIVE(631,110,0);
  5974  PRIMITIVE(632,110,1);PRIMITIVE(633,110,2);PRIMITIVE(634,110,3);
  5975  PRIMITIVE(635,110,4);{:384}{411:}PRIMITIVE(476,89,0);
  5976  PRIMITIVE(500,89,1);PRIMITIVE(395,89,2);PRIMITIVE(396,89,3);
  5977  {:411}{416:}PRIMITIVE(668,79,102);PRIMITIVE(669,79,1);
  5978  PRIMITIVE(670,82,0);PRIMITIVE(671,82,1);PRIMITIVE(672,83,1);
  5979  PRIMITIVE(673,83,3);PRIMITIVE(674,83,2);PRIMITIVE(675,70,0);
  5980  PRIMITIVE(676,70,1);PRIMITIVE(677,70,2);PRIMITIVE(678,70,3);
  5981  PRIMITIVE(679,70,4);{:416}{468:}PRIMITIVE(735,108,0);
  5982  PRIMITIVE(736,108,1);PRIMITIVE(737,108,2);PRIMITIVE(738,108,3);
  5983  PRIMITIVE(739,108,4);PRIMITIVE(740,108,5);
  5984  {:468}{487:}PRIMITIVE(757,105,0);PRIMITIVE(758,105,1);
  5985  PRIMITIVE(759,105,2);PRIMITIVE(760,105,3);PRIMITIVE(761,105,4);
  5986  PRIMITIVE(762,105,5);PRIMITIVE(763,105,6);PRIMITIVE(764,105,7);
  5987  PRIMITIVE(765,105,8);PRIMITIVE(766,105,9);PRIMITIVE(767,105,10);
  5988  PRIMITIVE(768,105,11);PRIMITIVE(769,105,12);PRIMITIVE(770,105,13);
  5989  PRIMITIVE(771,105,14);PRIMITIVE(772,105,15);PRIMITIVE(773,105,16);
  5990  {:487}{491:}PRIMITIVE(774,106,2);HASH[2618].RH:=774;
  5991  EQTB[2618]:=EQTB[CURVAL];PRIMITIVE(775,106,4);PRIMITIVE(776,106,3);
  5992  {:491}{553:}PRIMITIVE(801,87,0);HASH[2624].RH:=801;
  5993  EQTB[2624]:=EQTB[CURVAL];{:553}{780:}PRIMITIVE(898,4,256);
  5994  PRIMITIVE(899,5,257);HASH[2615].RH:=899;EQTB[2615]:=EQTB[CURVAL];
  5995  PRIMITIVE(900,5,258);HASH[2619].RH:=901;HASH[2620].RH:=901;
  5996  EQTB[2620].HH.B0:=9;EQTB[2620].HH.RH:=29989;EQTB[2620].HH.B1:=1;
  5997  EQTB[2619]:=EQTB[2620];EQTB[2619].HH.B0:=115;
  5998  {:780}{983:}PRIMITIVE(970,81,0);PRIMITIVE(971,81,1);PRIMITIVE(972,81,2);
  5999  PRIMITIVE(973,81,3);PRIMITIVE(974,81,4);PRIMITIVE(975,81,5);
  6000  PRIMITIVE(976,81,6);PRIMITIVE(977,81,7);
  6001  {:983}{1052:}PRIMITIVE(1025,14,0);PRIMITIVE(1026,14,1);
  6002  {:1052}{1058:}PRIMITIVE(1027,26,4);PRIMITIVE(1028,26,0);
  6003  PRIMITIVE(1029,26,1);PRIMITIVE(1030,26,2);PRIMITIVE(1031,26,3);
  6004  PRIMITIVE(1032,27,4);PRIMITIVE(1033,27,0);PRIMITIVE(1034,27,1);
  6005  PRIMITIVE(1035,27,2);PRIMITIVE(1036,27,3);PRIMITIVE(336,28,5);
  6006  PRIMITIVE(340,29,1);PRIMITIVE(342,30,99);
  6007  {:1058}{1071:}PRIMITIVE(1054,21,1);PRIMITIVE(1055,21,0);
  6008  PRIMITIVE(1056,22,1);PRIMITIVE(1057,22,0);PRIMITIVE(409,20,0);
  6009  PRIMITIVE(1058,20,1);PRIMITIVE(1059,20,2);PRIMITIVE(965,20,3);
  6010  PRIMITIVE(1060,20,4);PRIMITIVE(967,20,5);PRIMITIVE(1061,20,106);
  6011  PRIMITIVE(1062,31,99);PRIMITIVE(1063,31,100);PRIMITIVE(1064,31,101);
  6012  PRIMITIVE(1065,31,102);{:1071}{1088:}PRIMITIVE(1080,43,1);
  6013  PRIMITIVE(1081,43,0);{:1088}{1107:}PRIMITIVE(1090,25,12);
  6014  PRIMITIVE(1091,25,11);PRIMITIVE(1092,25,10);PRIMITIVE(1093,23,0);
  6015  PRIMITIVE(1094,23,1);PRIMITIVE(1095,24,0);PRIMITIVE(1096,24,1);
  6016  {:1107}{1114:}PRIMITIVE(45,47,1);PRIMITIVE(349,47,0);
  6017  {:1114}{1141:}PRIMITIVE(1127,48,0);PRIMITIVE(1128,48,1);
  6018  {:1141}{1156:}PRIMITIVE(866,50,16);PRIMITIVE(867,50,17);
  6019  PRIMITIVE(868,50,18);PRIMITIVE(869,50,19);PRIMITIVE(870,50,20);
  6020  PRIMITIVE(871,50,21);PRIMITIVE(872,50,22);PRIMITIVE(873,50,23);
  6021  PRIMITIVE(875,50,26);PRIMITIVE(874,50,27);PRIMITIVE(1129,51,0);
  6022  PRIMITIVE(878,51,1);PRIMITIVE(879,51,2);
  6023  {:1156}{1169:}PRIMITIVE(861,53,0);PRIMITIVE(862,53,2);
  6024  PRIMITIVE(863,53,4);PRIMITIVE(864,53,6);
  6025  {:1169}{1178:}PRIMITIVE(1147,52,0);PRIMITIVE(1148,52,1);
  6026  PRIMITIVE(1149,52,2);PRIMITIVE(1150,52,3);PRIMITIVE(1151,52,4);
  6027  PRIMITIVE(1152,52,5);{:1178}{1188:}PRIMITIVE(876,49,30);
  6028  PRIMITIVE(877,49,31);HASH[2617].RH:=877;EQTB[2617]:=EQTB[CURVAL];
  6029  {:1188}{1208:}PRIMITIVE(1171,93,1);PRIMITIVE(1172,93,2);
  6030  PRIMITIVE(1173,93,4);PRIMITIVE(1174,97,0);PRIMITIVE(1175,97,1);
  6031  PRIMITIVE(1176,97,2);PRIMITIVE(1177,97,3);
  6032  {:1208}{1219:}PRIMITIVE(1191,94,0);PRIMITIVE(1192,94,1);
  6033  {:1219}{1222:}PRIMITIVE(1193,95,0);PRIMITIVE(1194,95,1);
  6034  PRIMITIVE(1195,95,2);PRIMITIVE(1196,95,3);PRIMITIVE(1197,95,4);
  6035  PRIMITIVE(1198,95,5);PRIMITIVE(1199,95,6);
  6036  {:1222}{1230:}PRIMITIVE(415,85,3983);PRIMITIVE(419,85,5007);
  6037  PRIMITIVE(416,85,4239);PRIMITIVE(417,85,4495);PRIMITIVE(418,85,4751);
  6038  PRIMITIVE(477,85,5574);PRIMITIVE(412,86,3935);PRIMITIVE(413,86,3951);
  6039  PRIMITIVE(414,86,3967);{:1230}{1250:}PRIMITIVE(941,99,0);
  6040  PRIMITIVE(953,99,1);{:1250}{1254:}PRIMITIVE(1217,78,0);
  6041  PRIMITIVE(1218,78,1);{:1254}{1262:}PRIMITIVE(274,100,0);
  6042  PRIMITIVE(275,100,1);PRIMITIVE(276,100,2);PRIMITIVE(1227,100,3);
  6043  {:1262}{1272:}PRIMITIVE(1228,60,1);PRIMITIVE(1229,60,0);
  6044  {:1272}{1277:}PRIMITIVE(1230,58,0);PRIMITIVE(1231,58,1);
  6045  {:1277}{1286:}PRIMITIVE(1237,57,4239);PRIMITIVE(1238,57,4495);
  6046  {:1286}{1291:}PRIMITIVE(1239,19,0);PRIMITIVE(1240,19,1);
  6047  PRIMITIVE(1241,19,2);PRIMITIVE(1242,19,3);
  6048  {:1291}{1344:}PRIMITIVE(1285,59,0);PRIMITIVE(594,59,1);WRITELOC:=CURVAL;
  6049  PRIMITIVE(1286,59,2);PRIMITIVE(1287,59,3);PRIMITIVE(1288,59,4);
  6050  PRIMITIVE(1289,59,5);{:1344};NONEWCONTROLSEQUENCE:=TRUE;END;
  6051  {:1336}{1338:}{PROCEDURE DEBUGHELP;LABEL 888,10;VAR K,L,M,N:INTEGER;
  6052  BEGIN;WHILE TRUE DO BEGIN;PRINTNL(1284);;READ(TERMIN,M);
  6053  IF M<0 THEN GOTO 10 ELSE IF M=0 THEN BEGIN GOTO 888;888:M:=0;
  6054  ['BREAKPOINT']END ELSE BEGIN READ(TERMIN,N);
  6055  CASE M OF[1339:]1:PRINTWORD(MEM[N]);2:PRINTINT(MEM[N].HH.LH);
  6056  3:PRINTINT(MEM[N].HH.RH);4:PRINTWORD(EQTB[N]);5:PRINTWORD(FONTINFO[N]);
  6057  6:PRINTWORD(SAVESTACK[N]);7:SHOWBOX(N);8:BEGIN BREADTHMAX:=10000;
  6058  DEPTHTHRESHOLD:=POOLSIZE-POOLPTR-10;SHOWNODELIST(N);END;
  6059  9:SHOWTOKENLIST(N,0,1000);10:SLOWPRINT(N);11:CHECKMEM(N>0);
  6060  12:SEARCHMEM(N);13:BEGIN READ(TERMIN,L);PRINTCMDCHR(N,L);END;
  6061  14:FOR K:=0 TO N DO PRINT(BUFFER[K]);15:BEGIN FONTINSHORTDISPLAY:=0;
  6062  SHORTDISPLAY(N);END;16:PANICKING:=NOT PANICKING;
  6063  [:1339]ELSE PRINT(63)END;END;END;10:END;}
  6064  {:1338}{:1330}{1332:}BEGIN HISTORY:=3;REWRITE(TERMOUT,'TTY:','/O');
  6065  IF READYALREADY=314159 THEN GOTO 1;{14:}BAD:=0;
  6066  IF(HALFERRORLINE<30)OR(HALFERRORLINE>ERRORLINE-15)THEN BAD:=1;
  6067  IF MAXPRINTLINE<60 THEN BAD:=2;IF DVIBUFSIZE MOD 8<>0 THEN BAD:=3;
  6068  IF 1100>30000 THEN BAD:=4;IF 1777>2100 THEN BAD:=5;
  6069  IF MAXINOPEN>=128 THEN BAD:=6;IF 30000<267 THEN BAD:=7;
  6070  {:14}{111:}IF(MEMMIN<>0)OR(MEMMAX<>30000)THEN BAD:=10;
  6071  IF(MEMMIN>0)OR(MEMMAX<30000)THEN BAD:=10;IF(0>0)OR(255<127)THEN BAD:=11;
  6072  IF(0>0)OR(65535<32767)THEN BAD:=12;IF(0<0)OR(255>65535)THEN BAD:=13;
  6073  IF(MEMMIN<0)OR(MEMMAX>=65535)OR(-0-MEMMIN>65536)THEN BAD:=14;
  6074  IF(0<0)OR(FONTMAX>255)THEN BAD:=15;IF FONTMAX>256 THEN BAD:=16;
  6075  IF(SAVESIZE>65535)OR(MAXSTRINGS>65535)THEN BAD:=17;
  6076  IF BUFSIZE>65535 THEN BAD:=18;IF 255<255 THEN BAD:=19;
  6077  {:111}{290:}IF 6976>65535 THEN BAD:=21;
  6078  {:290}{522:}IF 20>FILENAMESIZE THEN BAD:=31;
  6079  {:522}{1249:}IF 2*65535<30000-MEMMIN THEN BAD:=41;
  6080  {:1249}IF BAD>0 THEN BEGIN WRITELN(TERMOUT,
  6081  'Ouch---my internal constants have been clobbered!','---case ',BAD:1);
  6082  GOTO 9999;END;INITIALIZE;IF NOT GETSTRINGSSTARTED THEN GOTO 9999;
  6083  INITPRIM;INITSTRPTR:=STRPTR;INITPOOLPTR:=POOLPTR;FIXDATEANDTIME;
  6084  READYALREADY:=314159;1:{55:}SELECTOR:=17;TALLY:=0;TERMOFFSET:=0;
  6085  FILEOFFSET:=0;
  6086  {:55}{61:}WRITE(TERMOUT,'This is TeX, Version 3.141592653');
  6087  IF FORMATIDENT=0 THEN WRITELN(TERMOUT,' (no format preloaded)')ELSE
  6088  BEGIN SLOWPRINT(FORMATIDENT);PRINTLN;END;;{:61}{528:}JOBNAME:=0;
  6089  NAMEINPROGRESS:=FALSE;LOGOPENED:=FALSE;{:528}{533:}OUTPUTFILENAME:=0;
  6090  {:533};{1337:}BEGIN{331:}BEGIN INPUTPTR:=0;MAXINSTACK:=0;INOPEN:=0;
  6091  OPENPARENS:=0;MAXBUFSTACK:=0;PARAMPTR:=0;MAXPARAMSTACK:=0;
  6092  FIRST:=BUFSIZE;REPEAT BUFFER[FIRST]:=0;FIRST:=FIRST-1;UNTIL FIRST=0;
  6093  SCANNERSTATUS:=0;WARNINGINDEX:=0;FIRST:=1;CURINPUT.STATEFIELD:=33;
  6094  CURINPUT.STARTFIELD:=1;CURINPUT.INDEXFIELD:=0;LINE:=0;
  6095  CURINPUT.NAMEFIELD:=0;FORCEEOF:=FALSE;ALIGNSTATE:=1000000;
  6096  IF NOT INITTERMINAL THEN GOTO 9999;CURINPUT.LIMITFIELD:=LAST;
  6097  FIRST:=LAST+1;END{:331};
  6098  IF(FORMATIDENT=0)OR(BUFFER[CURINPUT.LOCFIELD]=38)THEN BEGIN IF
  6099  FORMATIDENT<>0 THEN INITIALIZE;IF NOT OPENFMTFILE THEN GOTO 9999;
  6100  IF NOT LOADFMTFILE THEN BEGIN WCLOSE(FMTFILE);GOTO 9999;END;
  6101  WCLOSE(FMTFILE);
  6102  WHILE(CURINPUT.LOCFIELD<CURINPUT.LIMITFIELD)AND(BUFFER[CURINPUT.LOCFIELD
  6103  ]=32)DO CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;END;
  6104  IF(EQTB[5311].INT<0)OR(EQTB[5311].INT>255)THEN CURINPUT.LIMITFIELD:=
  6105  CURINPUT.LIMITFIELD-1 ELSE BUFFER[CURINPUT.LIMITFIELD]:=EQTB[5311].INT;
  6106  FIXDATEANDTIME;{765:}MAGICOFFSET:=STRSTART[892]-9*16{:765};
  6107  {75:}IF INTERACTION=0 THEN SELECTOR:=16 ELSE SELECTOR:=17{:75};
  6108  IF(CURINPUT.LOCFIELD<CURINPUT.LIMITFIELD)AND(EQTB[3983+BUFFER[CURINPUT.
  6109  LOCFIELD]].HH.RH<>0)THEN STARTINPUT;END{:1337};HISTORY:=0;MAINCONTROL;
  6110  FINALCLEANUP;CLOSEFILESANDTERMINATE;9999:READYALREADY:=0;END.{:1332}