{4:}{9:}
[inherit('sys$library:starlet')]
{:9}PROGRAM ETEX;LABEL{6:}1,9998,9999;{:6}CONST{11:}MEMMAX=327144;
MEMMIN=0;BUFSIZE=2048;SIZEINPUTLINE=133;ERRORLINE=79;HALFERRORLINE=50;
MAXPRINTLINE=79;STACKSIZE=200;MAXINOPEN=12;FONTMAX=255;
FONTMEMSIZE=81920;PARAMSIZE=60;NESTSIZE=40;MAXSTRINGS=15400;
STRINGVACANCIES=160000;POOLSIZE=186000;SAVESIZE=2000;TRIESIZE=45000;
TRIEOPSIZE=1000;DVIBUFSIZE=1024;VAXBLOCKLENGTH=512;FILENAMESIZE=255;
POOLFNAME='ETEX.POOL';{:11}TYPE{18:}ASCIICODE=0..255;{:18}{25:}
EIGHTBITS=0..255;ALPHAFILE= text ;
BYTEBLOCK=PACKED ARRAY[0..VAXBLOCKLENGTH-1]OF EIGHTBITS;
BYTEFILE=PACKED FILE OF BYTEBLOCK;{:25}{38:}POOLPOINTER=0..POOLSIZE;
STRNUMBER=0..MAXSTRINGS;PACKEDASCIICODE=0..255;{:38}{101:}
SCALED=INTEGER;NONNEGATIVEINTEGER=0..2147483647;SMALLNUMBER=0..63;{:101}
{109:}GLUERATIO=REAL;{:109}{113:}QUARTERWORD=0..511;HALFWORD=0..327145;
TWOCHOICES=1..2;FOURCHOICES=1..4;TWOHALVES=PACKED RECORD RH:HALFWORD;
CASE TWOCHOICES OF 1:(LH:HALFWORD);2:(B0:QUARTERWORD;B1:QUARTERWORD);
END;FOURQUARTERS=PACKED RECORD B0:QUARTERWORD;B1:QUARTERWORD;
B2:QUARTERWORD;B3:QUARTERWORD;END;
MEMORYWORD=PACKED RECORD CASE FOURCHOICES OF 1:(INT:INTEGER);
2:(GR:GLUERATIO);3:(HH:TWOHALVES);4:(QQQQ:FOURQUARTERS);END;
WORDBLOCK=PACKED ARRAY[0..VAXBLOCKLENGTH-1]OF MEMORYWORD;
WORDFILE=PACKED FILE OF WORDBLOCK;{:113}{150:}GLUEORD=0..3;{:150}{212:}
LISTSTATERECORD=RECORD MODEFIELD:-203..203;HEADFIELD,TAILFIELD:HALFWORD;
ETEXAUXFIELD:HALFWORD;PGFIELD,MLFIELD:INTEGER;AUXFIELD:MEMORYWORD;END;
{:212}{269:}GROUPCODE=0..16;{:269}{300:}
INSTATERECORD=RECORD STATEFIELD,INDEXFIELD:QUARTERWORD;
STARTFIELD,LOCFIELD,LIMITFIELD,NAMEFIELD:HALFWORD;END;{:300}{548:}
INTERNALFONTNUMBER=0..FONTMAX;FONTINDEX=0..FONTMEMSIZE;{:548}{594:}
DVIINDEX=0..DVIBUFSIZE;{:594}{920:}TRIEPOINTER=0..TRIESIZE;{:920}{925:}
HYPHPOINTER=0..503;{:925}{1412:}SAVEPOINTER=0..SAVESIZE;{:1412}{1623:}
SIGNEDHALFWORD=[ word ]-32768..32767;SIXTEENBITS=[ word ]0..65535;
FILESIZE=[ word ]0..FILENAMESIZE;VAXFFLOAT=PACKED RECORD FRAC1:0..127;
EXPO:0..255;SIGN:BOOLEAN;FRAC:0..65535;END;{:1623}{1626:}
UNSAFEFILE=[ unsafe ]FILE OF CHAR;FABPTR=^ FAB$type ;RABPTR=^ RAB$type ;
NAMPTR=^ NAM$type ;CHRPTR=^CHAR;{:1626}{1630:}
VMSITEMLIST=PACKED RECORD CASE BOOLEAN OF TRUE:(BUFFERLENGTH:SIXTEENBITS
;ITEMCODE:SIXTEENBITS;BUFFERADDR:[ long ]INTEGER;
RETLENADDR:[ long ]INTEGER);FALSE:(NEXTITEM:[ long ]INTEGER)END;{:1630}
{1634:}DESCRTYPE=PACKED RECORD LEN:SIXTEENBITS;DESCTYPE:EIGHTBITS;
DESCCLASS:EIGHTBITS;STRING:[ long ]INTEGER;END;DESCRPTR=^DESCRTYPE;
{:1634}{1636:}EDITORIDENT=RECORD CMDOFFSET:INTEGER;
IMAGE,ENTRY,QUITTING,EXITING,CMDTEXT:STRNUMBER;
STARTQUAL,EDTLIKE:BOOLEAN;LOGICAL:PACKED ARRAY[1..FILENAMESIZE]OF CHAR;
END;{:1636}{1639:}EDITRESULT=(FAILED,QUIT,EDITED);{:1639}VAR{13:}
BAD:INTEGER;{:13}{20:}XORD:ARRAY[CHAR]OF ASCIICODE;
XCHR:ARRAY[ASCIICODE]OF CHAR;{:20}{26:}
NAMEOFFILE,DEFAULTNAME:PACKED ARRAY[1..FILENAMESIZE]OF CHAR;
NAMELENGTH,DEFLTLENGTH:FILESIZE;{:26}{30:}
AUXBUF:VARYING[SIZEINPUTLINE]OF CHAR;
BUFFER:ARRAY[0..BUFSIZE]OF ASCIICODE;FIRST:0..BUFSIZE;LAST:0..BUFSIZE;
MAXBUFSTACK:0..BUFSIZE;{:30}{32:}TERMIN:ALPHAFILE;TERMOUT:ALPHAFILE;
{:32}{39:}STRPOOL:PACKED ARRAY[POOLPOINTER]OF PACKEDASCIICODE;
STRSTART:ARRAY[STRNUMBER]OF POOLPOINTER;POOLPTR:POOLPOINTER;
STRPTR:STRNUMBER;INITPOOLPTR:POOLPOINTER;INITSTRPTR:STRNUMBER;{:39}{50:}
POOLFILE:ALPHAFILE;{:50}{54:}LOGFILE:ALPHAFILE;EDCMDFILE:ALPHAFILE;
SELECTOR:0..22;DIG:ARRAY[0..22]OF 0..15;TALLY:INTEGER;
TERMOFFSET:0..MAXPRINTLINE;FILEOFFSET:0..MAXPRINTLINE;
TRICKBUF:ARRAY[0..ERRORLINE]OF ASCIICODE;TRICKCOUNT:INTEGER;
FIRSTCOUNT:INTEGER;{:54}{73:}INTERACTION:0..3;{:73}{76:}
DELETIONSALLOWED:BOOLEAN;SETBOXALLOWED:BOOLEAN;HISTORY:0..3;
ERRORCOUNT:-1..100;{:76}{79:}HELPLINE:ARRAY[0..5]OF STRNUMBER;
HELPPTR:0..6;USEERRHELP:BOOLEAN;{:79}{96:}INTERRUPT:[ volatile ]INTEGER;
OKTOINTERRUPT:BOOLEAN;{:96}{104:}ARITHERROR:BOOLEAN;REMAINDER:SCALED;
{:104}{115:}TEMPPTR:HALFWORD;{:115}{116:}
MEM:ARRAY[MEMMIN..MEMMAX]OF MEMORYWORD;LOMEMMAX:HALFWORD;
HIMEMMIN:HALFWORD;{:116}{117:}VARUSED,DYNUSED:INTEGER;{:117}{118:}
AVAIL:HALFWORD;MEMEND:HALFWORD;{:118}{124:}ROVER:HALFWORD;{:124}{165:}
{FREE:PACKED ARRAY[MEMMIN..MEMMAX]OF BOOLEAN;
WASFREE:PACKED ARRAY[MEMMIN..MEMMAX]OF BOOLEAN;
WASMEMEND,WASLOMAX,WASHIMIN:HALFWORD;PANICKING:BOOLEAN;}{:165}{173:}
FONTINSHORTDISPLAY:INTEGER;{:173}{181:}DEPTHTHRESHOLD:INTEGER;
BREADTHMAX:INTEGER;{:181}{213:}
NEST:ARRAY[0..NESTSIZE]OF LISTSTATERECORD;NESTPTR:0..NESTSIZE;
MAXNESTSTACK:0..NESTSIZE;CURLIST:LISTSTATERECORD;SHOWNMODE:-203..203;
{:213}{246:}OLDSETTING:0..22;{:246}{253:}
EQTB:ARRAY[1..14021]OF MEMORYWORD;
XEQLEVEL:ARRAY[13168..14021]OF QUARTERWORD;{:253}{256:}
HASH:ARRAY[514..10780]OF TWOHALVES;HASHUSED:HALFWORD;
NONEWCONTROLSEQUENCE:BOOLEAN;CSCOUNT:INTEGER;{:256}{271:}
SAVESTACK:ARRAY[0..SAVESIZE]OF MEMORYWORD;SAVEPTR:0..SAVESIZE;
MAXSAVESTACK:0..SAVESIZE;CURLEVEL:QUARTERWORD;CURGROUP:GROUPCODE;
CURBOUNDARY:0..SAVESIZE;{:271}{286:}MAGSET:INTEGER;{:286}{297:}
CURCMD:EIGHTBITS;CURCHR:HALFWORD;CURCS:HALFWORD;CURTOK:HALFWORD;{:297}
{301:}INPUTSTACK:ARRAY[0..STACKSIZE]OF INSTATERECORD;
INPUTPTR:0..STACKSIZE;MAXINSTACK:0..STACKSIZE;CURINPUT:INSTATERECORD;
{:301}{304:}INOPEN:0..MAXINOPEN;OPENPARENS:0..MAXINOPEN;
INPUTFILE:ARRAY[1..MAXINOPEN]OF ALPHAFILE;LINE:INTEGER;
LINESTACK:ARRAY[1..MAXINOPEN]OF INTEGER;{:304}{305:}SCANNERSTATUS:0..5;
WARNINGINDEX:HALFWORD;DEFREF:HALFWORD;{:305}{308:}
PARAMSTACK:ARRAY[0..PARAMSIZE]OF HALFWORD;PARAMPTR:0..PARAMSIZE;
MAXPARAMSTACK:INTEGER;{:308}{309:}ALIGNSTATE:INTEGER;{:309}{310:}
BASEPTR:0..STACKSIZE;{:310}{333:}PARLOC:HALFWORD;PARTOKEN:HALFWORD;
{:333}{361:}FORCEEOF:BOOLEAN;{:361}{382:}CURMARK:ARRAY[0..4]OF HALFWORD;
{:382}{387:}LONGSTATE:111..114;{:387}{388:}
PSTACK:ARRAY[0..8]OF HALFWORD;{:388}{410:}CURVAL:INTEGER;
CURVALLEVEL:0..5;{:410}{438:}RADIX:SMALLNUMBER;{:438}{447:}
CURORDER:GLUEORD;{:447}{480:}READFILE:ARRAY[0..15]OF ALPHAFILE;
READOPEN:ARRAY[0..16]OF 0..2;{:480}{489:}CONDPTR:HALFWORD;IFLIMIT:0..4;
CURIF:SMALLNUMBER;IFLINE:INTEGER;{:489}{493:}SKIPLINE:INTEGER;{:493}
{512:}CURNAME:STRNUMBER;CURAREA:STRNUMBER;CUREXT:STRNUMBER;{:512}{513:}
AREADELIMITER:POOLPOINTER;TEXAREA,TEXFONTAREA:STRNUMBER;
INPNAME,FONTSNAME:PACKED ARRAY[1..FILENAMESIZE]OF CHAR;
INPLEN,FONTSLEN:FILESIZE;I:INTEGER;EXTDELIMITER:POOLPOINTER;{:513}{520:}
TEXFNAMEDEFAULT:PACKED ARRAY[1..9]OF CHAR;
TEXFORMATDEFAULT:PACKED ARRAY[1..FILENAMESIZE]OF CHAR;
POOLNAME:PACKED ARRAY[1..FILENAMESIZE]OF CHAR;FORMATAREALENGTH:FILESIZE;
FORMATDEFAULTLENGTH:INTEGER;{:520}{527:}NAMEINPROGRESS:BOOLEAN;
JOBNAME:STRNUMBER;LOGOPENED:BOOLEAN;{:527}{532:}DVIFILE:BYTEFILE;
OUTPUTFILENAME:STRNUMBER;LOGNAME:STRNUMBER;{:532}{539:}TFMFILE:BYTEFILE;
{:539}{549:}FONTINFO:ARRAY[FONTINDEX]OF MEMORYWORD;FMEMPTR:FONTINDEX;
FONTPTR:INTERNALFONTNUMBER;
FONTCHECK:ARRAY[INTERNALFONTNUMBER]OF FOURQUARTERS;
FONTSIZE:ARRAY[INTERNALFONTNUMBER]OF SCALED;
FONTDSIZE:ARRAY[INTERNALFONTNUMBER]OF SCALED;
FONTPARAMS:ARRAY[INTERNALFONTNUMBER]OF FONTINDEX;
FONTNAME:ARRAY[INTERNALFONTNUMBER]OF STRNUMBER;
FONTAREA:ARRAY[INTERNALFONTNUMBER]OF STRNUMBER;
FONTBC:ARRAY[INTERNALFONTNUMBER]OF EIGHTBITS;
FONTEC:ARRAY[INTERNALFONTNUMBER]OF EIGHTBITS;
FONTGLUE:ARRAY[INTERNALFONTNUMBER]OF HALFWORD;
FONTUSED:ARRAY[INTERNALFONTNUMBER]OF BOOLEAN;
HYPHENCHAR:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
SKEWCHAR:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
BCHARLABEL:ARRAY[INTERNALFONTNUMBER]OF FONTINDEX;
FONTBCHAR:ARRAY[INTERNALFONTNUMBER]OF 0..256;
FONTFALSEBCHAR:ARRAY[INTERNALFONTNUMBER]OF 0..256;{:549}{550:}
CHARBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
WIDTHBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
HEIGHTBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
DEPTHBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
ITALICBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
LIGKERNBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
KERNBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
EXTENBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;
PARAMBASE:ARRAY[INTERNALFONTNUMBER]OF INTEGER;{:550}{555:}
NULLCHARACTER:FOURQUARTERS;{:555}{592:}TOTALPAGES:INTEGER;MAXV:SCALED;
MAXH:SCALED;MAXPUSH:INTEGER;LASTBOP:INTEGER;DEADCYCLES:INTEGER;
DOINGLEADERS:BOOLEAN;C,F:QUARTERWORD;RULEHT,RULEDP,RULEWD:SCALED;
G:HALFWORD;LQ,LR:INTEGER;{:592}{595:}
DBUFFER:[ volatile , aligned (9)]PACKED RECORD CASE BOOLEAN OF FALSE:(B:
PACKED ARRAY[DVIINDEX]OF EIGHTBITS);TRUE:(L:BYTEBLOCK;R:BYTEBLOCK;
J:EIGHTBITS);END;HALFBUF:DVIINDEX;DVILIMIT:DVIINDEX;DVIPTR:DVIINDEX;
DVIOFFSET:INTEGER;DVIGONE:INTEGER;{:595}{605:}DOWNPTR,RIGHTPTR:HALFWORD;
{:605}{616:}DVIH,DVIV:SCALED;CURH,CURV:SCALED;DVIF:INTERNALFONTNUMBER;
CURS:INTEGER;{:616}{646:}
TOTALSTRETCH,TOTALSHRINK:ARRAY[GLUEORD]OF SCALED;LASTBADNESS:INTEGER;
{:646}{647:}ADJUSTTAIL:HALFWORD;{:647}{661:}PACKBEGINLINE:INTEGER;{:661}
{684:}EMPTYFIELD:TWOHALVES;NULLDELIMITER:FOURQUARTERS;{:684}{719:}
CURMLIST:HALFWORD;CURSTYLE:SMALLNUMBER;CURSIZE:SMALLNUMBER;CURMU:SCALED;
MLISTPENALTIES:BOOLEAN;{:719}{724:}CURF:INTERNALFONTNUMBER;
CURC:QUARTERWORD;CURI:FOURQUARTERS;{:724}{764:}MAGICOFFSET:INTEGER;
{:764}{770:}CURALIGN:HALFWORD;CURSPAN:HALFWORD;CURLOOP:HALFWORD;
ALIGNPTR:HALFWORD;CURHEAD,CURTAIL:HALFWORD;{:770}{814:}JUSTBOX:HALFWORD;
{:814}{821:}PASSIVE:HALFWORD;PRINTEDNODE:HALFWORD;PASSNUMBER:HALFWORD;
{:821}{823:}ACTIVEWIDTH:ARRAY[1..6]OF SCALED;
CURACTIVEWIDTH:ARRAY[1..6]OF SCALED;BACKGROUND:ARRAY[1..6]OF SCALED;
BREAKWIDTH:ARRAY[1..6]OF SCALED;{:823}{825:}NOSHRINKERRORYET:BOOLEAN;
{:825}{828:}CURP:HALFWORD;SECONDPASS:BOOLEAN;FINALPASS:BOOLEAN;
THRESHOLD:INTEGER;{:828}{833:}MINIMALDEMERITS:ARRAY[0..3]OF INTEGER;
MINIMUMDEMERITS:INTEGER;BESTPLACE:ARRAY[0..3]OF HALFWORD;
BESTPLLINE:ARRAY[0..3]OF HALFWORD;{:833}{839:}DISCWIDTH:SCALED;{:839}
{847:}EASYLINE:HALFWORD;LASTSPECIALLINE:HALFWORD;FIRSTWIDTH:SCALED;
SECONDWIDTH:SCALED;FIRSTINDENT:SCALED;SECONDINDENT:SCALED;{:847}{872:}
BESTBET:HALFWORD;FEWESTDEMERITS:INTEGER;BESTLINE:HALFWORD;
ACTUALLOOSENESS:INTEGER;LINEDIFF:INTEGER;{:872}{892:}
HC:ARRAY[0..65]OF 0..256;HN:SMALLNUMBER;HA,HB:HALFWORD;
HF:INTERNALFONTNUMBER;HU:ARRAY[0..63]OF 0..256;HYFCHAR:INTEGER;
CURLANG,INITCURLANG:ASCIICODE;LHYF,RHYF,INITLHYF,INITRHYF:INTEGER;
HYFBCHAR:HALFWORD;{:892}{900:}HYF:ARRAY[0..64]OF 0..9;INITLIST:HALFWORD;
INITLIG:BOOLEAN;INITLFT:BOOLEAN;{:900}{905:}HYPHENPASSED:SMALLNUMBER;
{:905}{907:}CURL,CURR:HALFWORD;CURQ:HALFWORD;LIGSTACK:HALFWORD;
LIGATUREPRESENT:BOOLEAN;LFTHIT,RTHIT:BOOLEAN;{:907}{921:}
TRIE:ARRAY[TRIEPOINTER]OF TWOHALVES;
HYFDISTANCE:ARRAY[1..TRIEOPSIZE]OF SMALLNUMBER;
HYFNUM:ARRAY[1..TRIEOPSIZE]OF SMALLNUMBER;
HYFNEXT:ARRAY[1..TRIEOPSIZE]OF QUARTERWORD;
OPSTART:ARRAY[ASCIICODE]OF 0..TRIEOPSIZE;{:921}{926:}
HYPHWORD:ARRAY[HYPHPOINTER]OF STRNUMBER;
HYPHLIST:ARRAY[HYPHPOINTER]OF HALFWORD;HYPHCOUNT:HYPHPOINTER;{:926}
{943:}TRIEOPHASH:ARRAY[-TRIEOPSIZE..TRIEOPSIZE]OF 0..TRIEOPSIZE;
TRIEUSED:ARRAY[ASCIICODE]OF QUARTERWORD;
TRIEOPLANG:ARRAY[1..TRIEOPSIZE]OF ASCIICODE;
TRIEOPVAL:ARRAY[1..TRIEOPSIZE]OF QUARTERWORD;TRIEOPPTR:0..TRIEOPSIZE;
{:943}{947:}TRIEC:PACKED ARRAY[TRIEPOINTER]OF PACKEDASCIICODE;
TRIEO:PACKED ARRAY[TRIEPOINTER]OF QUARTERWORD;
TRIEL:PACKED ARRAY[TRIEPOINTER]OF TRIEPOINTER;
TRIER:PACKED ARRAY[TRIEPOINTER]OF TRIEPOINTER;TRIEPTR:TRIEPOINTER;
TRIEHASH:PACKED ARRAY[TRIEPOINTER]OF TRIEPOINTER;{:947}{950:}
TRIETAKEN:PACKED ARRAY[1..TRIESIZE]OF BOOLEAN;
TRIEMIN:ARRAY[ASCIICODE]OF TRIEPOINTER;TRIEMAX:TRIEPOINTER;
TRIENOTREADY:BOOLEAN;{:950}{971:}BESTHEIGHTPLUSDEPTH:SCALED;{:971}{980:}
PAGETAIL:HALFWORD;PAGECONTENTS:0..2;PAGEMAXDEPTH:SCALED;
BESTPAGEBREAK:HALFWORD;LEASTPAGECOST:INTEGER;BESTSIZE:SCALED;{:980}
{982:}PAGESOFAR:ARRAY[0..7]OF SCALED;LASTGLUE:HALFWORD;
LASTPENALTY:INTEGER;LASTKERN:SCALED;LASTNODETYPE:INTEGER;
INSERTPENALTIES:INTEGER;{:982}{989:}OUTPUTACTIVE:BOOLEAN;{:989}{1032:}
MAINF:INTERNALFONTNUMBER;MAINI:FOURQUARTERS;MAINJ:FOURQUARTERS;
MAINK:FONTINDEX;MAINP:HALFWORD;MAINS:INTEGER;BCHAR:HALFWORD;
FALSEBCHAR:HALFWORD;CANCELBOUNDARY:BOOLEAN;INSDISC:BOOLEAN;{:1032}
{1074:}CURBOX:HALFWORD;{:1074}{1266:}AFTERTOKEN:HALFWORD;{:1266}{1281:}
LONGHELPSEEN:BOOLEAN;{:1281}{1299:}FORMATIDENT:STRNUMBER;{:1299}{1305:}
FMTFILE:WORDFILE;{:1305}{1331:}INITFLAG:BOOLEAN;{:1331}{1342:}
WRITEFILE:ARRAY[0..15]OF ALPHAFILE;WRITEOPEN:ARRAY[0..17]OF BOOLEAN;
{:1342}{1345:}WRITELOC:HALFWORD;{:1345}{1386:}ETEXMODE:0..1;{:1386}
{1394:}EOFSEEN:ARRAY[1..MAXINOPEN]OF BOOLEAN;{:1394}{1439:}
LRTEMP:HALFWORD;LRPTR:HALFWORD;LRPROBLEMS:INTEGER;CURDIR:SMALLNUMBER;
{:1439}{1483:}PSEUDOFILES:HALFWORD;{:1483}{1506:}
GRPSTACK:ARRAY[0..MAXINOPEN]OF SAVEPOINTER;
IFSTACK:ARRAY[0..MAXINOPEN]OF HALFWORD;{:1506}{1547:}MAXREGNUM:HALFWORD;
MAXREGHELPLINE:STRNUMBER;{:1547}{1549:}SAROOT:ARRAY[0..6]OF HALFWORD;
CURPTR:HALFWORD;SANULL:MEMORYWORD;{:1549}{1568:}SACHAIN:HALFWORD;
SALEVEL:QUARTERWORD;{:1568}{1575:}LASTLINEFILL:HALFWORD;
DOLASTLINEFIT:BOOLEAN;ACTIVENODESIZE:SMALLNUMBER;
FILLWIDTH:ARRAY[0..2]OF SCALED;BESTPLSHORT:ARRAY[0..3]OF SCALED;
BESTPLGLUE:ARRAY[0..3]OF SCALED;{:1575}{1591:}HYPHSTART:TRIEPOINTER;
HYPHINDEX:TRIEPOINTER;{:1591}{1592:}DISCPTR:ARRAY[1..3]OF HALFWORD;
{:1592}{1603:}COPYERR:(IGNOREIT,PRINTIT,SAVEIT);LABELSIZE:-1..14;{:1603}
{1616:}FORMATQUAL,DVIQUAL,CMDLINEPRESENT,CONTINUEQUAL,EIGHTQUAL,JOBQUAL,
BATCHQUAL,LOGQUAL,DIAGQUAL,EDITQUAL:BOOLEAN;DIAGFILE:ALPHAFILE;
DIAGNAME:STRNUMBER;TEMPFILE:ALPHAFILE;
LOGFNAME,DIAGFNAME,EDITNAME,LJOBNAME,DVIFNAME:PACKED ARRAY[1..
FILENAMESIZE]OF CHAR;LOGFLEN,DIAGFLEN,EDITLEN,LLENNAME,DVIFLEN:FILESIZE;
{:1616}{1619:}ETEX_CLI:[ external, readonly ] unsigned ;{:1619}{1622:}
TFMCOUNT:0..VAXBLOCKLENGTH;FMTCOUNT:0..VAXBLOCKLENGTH;{:1622}{1624:}
RES:[ volatile ]INTEGER;TTCHAN:[ volatile ]SIGNEDHALFWORD;{:1624}{1628:}
INFAB,OUTFAB:FABPTR;INRAB,OUTRAB:RABPTR;LASTLENGTH:INTEGER;
LASTNAME:PACKED ARRAY[1..FILENAMESIZE]OF CHAR;LASTBASENAMLEN:INTEGER;
LASTBASENAME:PACKED ARRAY[1..FILENAMESIZE]OF CHAR;{:1628}{1637:}
EDITOR:PACKED ARRAY[1..4]OF EDITORIDENT;{:1637}{1665:}
EMPTYEDITOR:EDITORIDENT;{:1665}{34:}PROCEDURE WAKEUPTERMINAL;
BEGIN OUTRAB^.RAB$V_CCO:=TRUE;WRITELN(TERMOUT);OUTRAB^.RAB$V_CCO:=FALSE;
END;{:34}{1618:}
[ external]FUNCTION cli$present( %stdescr ENTITY:[ volatile , readonly ]
PACKED ARRAY[L1..U1:INTEGER]OF CHAR:= %immed 0):INTEGER;EXTERN;
[ external]FUNCTION cli$get_value( %stdescr ENTITY:[ volatile ,
readonly ]PACKED ARRAY[L1..U1:INTEGER]OF CHAR:= %immed 0;
%stdescr RETURNS:[ volatile ]PACKED ARRAY[L2..U2:INTEGER]OF CHAR:=
%immed 0;VAR RETLEN:[ volatile ]SIXTEENBITS:= %immed 0):INTEGER;EXTERN;
[ external]FUNCTION cli$dcl_parse( %stdescr CMDLINE:[ volatile ,
readonly ]PACKED ARRAY[L1..U1:INTEGER]OF CHAR:= %immed 0;
%immed CLDTABLE:[ volatile , readonly ] unsigned := %immed 0):INTEGER;
EXTERN;
[ external]FUNCTION lib$get_foreign( %stdescr CMDLIN:[ volatile ]PACKED
ARRAY[L1..U1:INTEGER]OF CHAR:= %immed 0;
%stdescr PROMPT:[ volatile ]PACKED ARRAY[L2..U2:INTEGER]OF CHAR:=
%immed 0;VAR LEN:[ volatile ]SIXTEENBITS:= %immed 0;
VAR FLAG:[ volatile ]INTEGER:= %immed 0):INTEGER;EXTERN;
[ external, asynchronous]FUNCTION lib$sig_to_ret( %ref SIGNALARGS:[
volatile , unsafe ]ARRAY[L1..U1:INTEGER]OF[ byte ]EIGHTBITS;
%ref MECHANARGS:[ volatile , unsafe ]ARRAY[L2..U2:INTEGER]OF[ byte ]
EIGHTBITS):INTEGER;EXTERN;{:1618}{1625:}
[ asynchronous]PROCEDURE CTRLCROUT;BEGIN INTERRUPT:=1;
$qiow(,TTCHAN, io$_setmode + io$m_ctrlcast ,,,, %immed CTRLCROUT,,
%immed 3,,,);;END;{:1625}{1627:}FUNCTION USERRESET(VAR FAB: FAB$type ;
VAR RAB: RAB$type ;VAR F:UNSAFEFILE):INTEGER;LABEL 30;VAR STS:INTEGER;
NAM:NAMPTR;P:CHRPTR;I:INTEGER;ICHR:INTEGER;BEGIN LASTLENGTH:=0;
STS:=$parse(FAB);IF NOT ODD(STS)THEN GOTO 30;STS:=$search(FAB);
IF ODD(STS)THEN FAB.FAB$V_NAM:=TRUE;STS:=$open(FAB);
IF NOT ODD(STS)THEN GOTO 30;STS:=$connect(RAB);
IF NOT ODD(STS)THEN GOTO 30;NAM:=FAB.FAB$L_NAM::NAMPTR;
IF NAM=NIL THEN GOTO 30;LASTLENGTH:=NAM^.NAM$B_RSL;
FOR I:=1 TO LASTLENGTH DO BEGIN P:=(NAM^.NAM$L_RSA::INTEGER+I-1)::CHRPTR
;LASTNAME[I]:=P^;END;LASTBASENAMLEN:=NAM^.NAM$B_NAME;
FOR I:=1 TO LASTBASENAMLEN DO BEGIN P:=(NAM^.NAM$L_NAME::INTEGER+I-1)::
CHRPTR;ICHR:=ORD(P^);IF(ICHR>64)AND(ICHR<91)THEN ICHR:=ICHR+32;
LASTBASENAME[I]:=CHR(ICHR);END;30:USERRESET:=STS;END;
FUNCTION USERREWRITE(VAR FAB: FAB$type ;VAR RAB: RAB$type ;
VAR F:UNSAFEFILE):INTEGER;LABEL 30;VAR STS:INTEGER;NAM:NAMPTR;P:CHRPTR;
I:INTEGER;ICHR:INTEGER;BEGIN STS:=$create(FAB);
IF NOT ODD(STS)THEN GOTO 30;STS:=$connect(RAB);
IF NOT ODD(STS)THEN GOTO 30;NAM:=FAB.FAB$L_NAM::NAMPTR;
IF NAM=NIL THEN GOTO 30;LASTLENGTH:=NAM^.NAM$B_RSL;
FOR I:=1 TO LASTLENGTH DO BEGIN P:=(NAM^.NAM$L_RSA::INTEGER+I-1)::CHRPTR
;LASTNAME[I]:=P^;END;LASTBASENAMLEN:=NAM^.NAM$B_NAME;
FOR I:=1 TO LASTBASENAMLEN DO BEGIN P:=(NAM^.NAM$L_NAME::INTEGER+I-1)::
CHRPTR;ICHR:=ORD(P^);IF(ICHR>64)AND(ICHR<91)THEN ICHR:=ICHR+32;
LASTBASENAME[I]:=CHR(ICHR);END;30:USERREWRITE:=STS;END;
FUNCTION PAS$FAB(VAR FOOBAR:UNSAFEFILE):FABPTR;EXTERN;
FUNCTION PAS$RAB(VAR FOOBAR:UNSAFEFILE):RABPTR;EXTERN;{:1627}{1629:}
FUNCTION TRANSLATE(VAR T:PACKED ARRAY[L1..U1:INTEGER]OF CHAR;
VAR LEN:SIGNEDHALFWORD):BOOLEAN;VAR S:VARYING[FILENAMESIZE]OF CHAR;
TRNLNMRETURN:INTEGER;RETURNLENGTH:[ volatile ]INTEGER;
ATTRIBUTES:UNSIGNED;ITEMLIST:[ volatile ]ARRAY[0..1]OF VMSITEMLIST;
BEGIN S:= substr(T,1,LEN);ATTRIBUTES:= lnm$m_case_blind ;
RETURNLENGTH:=0;WITH ITEMLIST[0]DO BEGIN BUFFERLENGTH:=FILENAMESIZE;
ITEMCODE:= lnm$_string ;BUFFERADDR:= iaddress(T);
RETLENADDR:= iaddress(RETURNLENGTH);END;ITEMLIST[1].NEXTITEM:=0;
TRNLNMRETURN:= $trnlnm(ATTRIBUTES,'LNM$DCL_LOGICAL',S,,ITEMLIST);
LEN:=RETURNLENGTH;TRANSLATE:=TRNLNMRETURN= sts$k_success ;END;{:1629}
{1631:}[ external]FUNCTION lib$callg( %immed ARGLIST:[ long ]INTEGER;
%immed USERPROC:[ long ]INTEGER):INTEGER;EXTERN;
FUNCTION CALLEDITOR(PROC:[ long ]INTEGER;
PARAM1,PARAM3:[ volatile ]DESCRPTR):INTEGER;
VAR CALLGDESCRIPTOR:PACKED ARRAY[1..4]OF[ long ]INTEGER;
BEGIN CALLGDESCRIPTOR[1]:=1;CALLGDESCRIPTOR[2]:=PARAM1::INTEGER;
IF PARAM3<>NIL THEN BEGIN CALLGDESCRIPTOR[1]:=3;CALLGDESCRIPTOR[3]:=0;
CALLGDESCRIPTOR[4]:=PARAM3::INTEGER;END;
CALLEDITOR:= lib$callg( iaddress(CALLGDESCRIPTOR),PROC)END;{:1631}
{1632:}
[ external, asynchronous]FUNCTION str$get1_dx( %ref ALLOC:[ readonly ]
SIXTEENBITS; %immed DESCRP:DESCRPTR):INTEGER;EXTERN;
[ external, asynchronous]FUNCTION str$free1_dx( %immed DESCRP:DESCRPTR):
INTEGER;EXTERN;
[ external, asynchronous]PROCEDURE lib$signal( %immed CONDCODE:INTEGER;
%immed NUMOFARGS:INTEGER:= %immed 0;
%immed FAOARGUMENT:[list,unsafe]INTEGER);EXTERN;{:1632}{1633:}
PROCEDURE STRTODESCR(POOLSTRING:STRNUMBER;
VAR DYNAMSTR:[ volatile ]DESCRPTR);VAR CHPTR,STRSTAT:INTEGER;
STRSIZE:SIXTEENBITS;CHCTR:CHRPTR;
BEGIN IF DYNAMSTR=NIL THEN BEGIN NEW(DYNAMSTR);
WITH DYNAMSTR^DO BEGIN LEN:=0;DESCTYPE:= dsc$k_dtype_t ;
DESCCLASS:= dsc$k_class_d ;STRING:=0 END;
END ELSE IF DYNAMSTR^.LEN<>0 THEN BEGIN STRSTAT:= str$free1_dx(DYNAMSTR)
;IF NOT ODD(STRSTAT)THEN lib$signal(STRSTAT)END;
CHPTR:=STRSTART[POOLSTRING];
STRSIZE:=STRSTART[POOLSTRING+1]-STRSTART[POOLSTRING];
STRSTAT:= str$get1_dx(STRSIZE,DYNAMSTR);
IF NOT ODD(STRSTAT)THEN lib$signal(STRSTAT);
CHCTR:=DYNAMSTR^.STRING::CHRPTR;
WHILE STRSIZE>0 DO BEGIN CHCTR^:=XCHR[STRPOOL[CHPTR]];
CHCTR:=(CHCTR::INTEGER+1)::CHRPTR;CHPTR:=CHPTR+1;STRSIZE:=STRSIZE-1 END;
END;{:1633}{1635:}PROCEDURE RELEASE(STRING:DESCRPTR);
VAR STRSTAT:INTEGER;
BEGIN IF STRING<>NIL THEN BEGIN STRSTAT:= str$free1_dx(STRING);
IF NOT ODD(STRSTAT)THEN lib$signal(STRSTAT);DISPOSE(STRING);STRING:=NIL;
END;END;{:1635}{1640:}
[ external]FUNCTION lib$find_image_symbol( %immed FILENM:DESCRPTR;
%immed SYMBOL:DESCRPTR; %ref SYMBOLVALUE:[ volatile , long ]INTEGER;
%immed IMAGENAME:DESCRPTR:= %immed 0):INTEGER;EXTERN;
[ external]FUNCTION lib$spawn( %immed CMD:DESCRPTR;
%immed SYSINPUT:DESCRPTR:= %immed 0;
%immed SYSOUTPUT:DESCRPTR:= %immed 0;
%ref FLAGS:[ long ]INTEGER:= %immed 0; %immed PRCNM:DESCRPTR:= %immed 0;
%ref PID:[ long ]INTEGER:= %immed 0;
%ref STATUS:[ long ]INTEGER:= %immed 0):INTEGER;EXTERN;
FUNCTION EDIT(FILENM,CMDFILE:STRNUMBER;EDITOR:EDITORIDENT):EDITRESULT;
VAR EDITCOMMANDLINE:DESCRPTR;CHARCT:SIXTEENBITS;EDITORENTRY:INTEGER;
EDITORSTATUS,STRSTAT:INTEGER;CHPTR:CHRPTR;QUITSTATUS,EXITSTATUS:INTEGER;
IMAGESYMBOL,ENTRYPOINT,BADSYMBOL,GOODSYMBOL:DESCRPTR;
EDITFILE,EDITCMD:DESCRPTR;BEGIN{1647:}RESET(TEMPFILE);CHARCT:=1;
WHILE NOT EOF(TEMPFILE)DO BEGIN GET(TEMPFILE);
CHARCT:=CHARCT+1 END{:1647};EDITCOMMANDLINE:=NIL;{1648:}
NEW(EDITCOMMANDLINE);WITH EDITCOMMANDLINE^DO BEGIN LEN:=0;
DESCTYPE:= dsc$k_dtype_t ;DESCCLASS:= dsc$k_class_d ;STRING:=0 END;
STRSTAT:= str$get1_dx(CHARCT,EDITCOMMANDLINE);
IF NOT ODD(STRSTAT)THEN lib$signal(STRSTAT);
CHPTR:=EDITCOMMANDLINE^.STRING::CHRPTR;RESET(TEMPFILE);
WHILE NOT EOF(TEMPFILE)DO BEGIN CHPTR^:=TEMPFILE^;GET(TEMPFILE);
CHPTR:=(CHPTR::INTEGER+1)::CHRPTR END{:1648};EDITFILE:=NIL;EDITCMD:=NIL;
IF EDITOR.EDTLIKE THEN BEGIN STRTODESCR(FILENM,EDITFILE);
STRTODESCR(CMDFILE,EDITCMD);END;EDIT:=FAILED;EDITORSTATUS:=4;
QUITSTATUS:=0;EXITSTATUS:= sts$k_success ;{1641:}IMAGESYMBOL:=NIL;
ENTRYPOINT:=NIL;BADSYMBOL:=NIL;GOODSYMBOL:=NIL;
STRTODESCR(EDITOR.IMAGE,IMAGESYMBOL);
STRTODESCR(EDITOR.ENTRY,ENTRYPOINT);
STRTODESCR(EDITOR.QUITTING,BADSYMBOL);
STRTODESCR(EDITOR.EXITING,GOODSYMBOL){:1641};
IF EDITOR.IMAGE<>0 THEN BEGIN IF lib$find_image_symbol(IMAGESYMBOL,
ENTRYPOINT,EDITORENTRY)= sts$k_success THEN{1642:}BEGIN{1645:}
IF EDITOR.QUITTING<>0 THEN IF NOT ODD( lib$find_image_symbol(IMAGESYMBOL
,BADSYMBOL,QUITSTATUS))THEN QUITSTATUS:= sts$k_success ;
IF EDITOR.EXITING<>0 THEN IF NOT ODD( lib$find_image_symbol(IMAGESYMBOL,
GOODSYMBOL,EXITSTATUS))THEN EXITSTATUS:= sts$k_success {:1645};
IF EDITOR.EDTLIKE THEN EDITORSTATUS:=CALLEDITOR(EDITORENTRY,EDITFILE,
EDITCMD)ELSE{1646:}BEGIN CHPTR:=EDITCOMMANDLINE^.STRING::CHRPTR;
FOR CHARCT:=1 TO EDITOR.CMDOFFSET DO BEGIN CHPTR^:=' ';
CHPTR:=(CHPTR::INTEGER+1)::CHRPTR END;
EDITORSTATUS:=CALLEDITOR(EDITORENTRY,EDITCOMMANDLINE,NIL);END{:1646};
END{:1642}ELSE EDITOR.IMAGE:=0 END;
IF EDITOR.IMAGE=0 THEN STRSTAT:= lib$spawn(CMD:=EDITCOMMANDLINE,STATUS:=
EDITORSTATUS);{1643:}RELEASE(IMAGESYMBOL);RELEASE(ENTRYPOINT);
RELEASE(BADSYMBOL);RELEASE(GOODSYMBOL);RELEASE(EDITCOMMANDLINE);
RELEASE(EDITFILE);RELEASE(EDITCMD);{:1643};{1644:}
IF EDITORSTATUS>= sts$m_inhib_msg THEN EDITORSTATUS:=EDITORSTATUS-
sts$m_inhib_msg ;
IF EDITORSTATUS=EXITSTATUS THEN EDIT:=EDITED ELSE IF EDITORSTATUS=
QUITSTATUS THEN EDIT:=QUIT{:1644}END;{:1640}PROCEDURE INITIALIZE;
VAR{19:}I:INTEGER;{:19}{163:}K:INTEGER;{:163}{927:}Z:HYPHPOINTER;{:927}
BEGIN{8:}{21:}XCHR[32]:=' ';XCHR[33]:='!';XCHR[34]:='"';XCHR[35]:='#';
XCHR[36]:='$';XCHR[37]:='%';XCHR[38]:='&';XCHR[39]:='''';XCHR[40]:='(';
XCHR[41]:=')';XCHR[42]:='*';XCHR[43]:='+';XCHR[44]:=',';XCHR[45]:='-';
XCHR[46]:='.';XCHR[47]:='/';XCHR[48]:='0';XCHR[49]:='1';XCHR[50]:='2';
XCHR[51]:='3';XCHR[52]:='4';XCHR[53]:='5';XCHR[54]:='6';XCHR[55]:='7';
XCHR[56]:='8';XCHR[57]:='9';XCHR[58]:=':';XCHR[59]:=';';XCHR[60]:='<';
XCHR[61]:='=';XCHR[62]:='>';XCHR[63]:='?';XCHR[64]:='@';XCHR[65]:='A';
XCHR[66]:='B';XCHR[67]:='C';XCHR[68]:='D';XCHR[69]:='E';XCHR[70]:='F';
XCHR[71]:='G';XCHR[72]:='H';XCHR[73]:='I';XCHR[74]:='J';XCHR[75]:='K';
XCHR[76]:='L';XCHR[77]:='M';XCHR[78]:='N';XCHR[79]:='O';XCHR[80]:='P';
XCHR[81]:='Q';XCHR[82]:='R';XCHR[83]:='S';XCHR[84]:='T';XCHR[85]:='U';
XCHR[86]:='V';XCHR[87]:='W';XCHR[88]:='X';XCHR[89]:='Y';XCHR[90]:='Z';
XCHR[91]:='[';XCHR[92]:='\';XCHR[93]:=']';XCHR[94]:='^';XCHR[95]:='_';
XCHR[96]:='`';XCHR[97]:='a';XCHR[98]:='b';XCHR[99]:='c';XCHR[100]:='d';
XCHR[101]:='e';XCHR[102]:='f';XCHR[103]:='g';XCHR[104]:='h';
XCHR[105]:='i';XCHR[106]:='j';XCHR[107]:='k';XCHR[108]:='l';
XCHR[109]:='m';XCHR[110]:='n';XCHR[111]:='o';XCHR[112]:='p';
XCHR[113]:='q';XCHR[114]:='r';XCHR[115]:='s';XCHR[116]:='t';
XCHR[117]:='u';XCHR[118]:='v';XCHR[119]:='w';XCHR[120]:='x';
XCHR[121]:='y';XCHR[122]:='z';XCHR[123]:='{';XCHR[124]:='|';
XCHR[125]:='}';XCHR[126]:='~';{:21}{23:}XCHR[0]:=' ';
FOR I:=1 TO 31 DO XCHR[I]:=CHR(I);XCHR[12]:=CHR(12);XCHR[9]:=CHR(9);
FOR I:=127 TO 159 DO XCHR[I]:=' ';FOR I:=160 TO 255 DO XCHR[I]:=CHR(I);
{:23}{24:}FOR I:=0 TO 255 DO XORD[CHR(I)]:=127;
FOR I:=128 TO 255 DO XORD[XCHR[I]]:=I;
FOR I:=0 TO 126 DO XORD[XCHR[I]]:=I;{:24}{74:}INTERACTION:=3;{:74}{77:}
DELETIONSALLOWED:=TRUE;SETBOXALLOWED:=TRUE;ERRORCOUNT:=0;{:77}{80:}
HELPPTR:=0;USEERRHELP:=FALSE;{:80}{97:}INTERRUPT:=0;OKTOINTERRUPT:=TRUE;
IF $assign('SYS$COMMAND',TTCHAN,,)= sts$k_success THEN $qiow(,TTCHAN,
io$_setmode + io$m_ctrlcast ,,,, %immed CTRLCROUT,, %immed 3,,,);;{:97}
{166:}{WASMEMEND:=MEMMIN;WASLOMAX:=MEMMIN;WASHIMIN:=MEMMAX;
PANICKING:=FALSE;}{:166}{215:}NESTPTR:=0;MAXNESTSTACK:=0;
CURLIST.MODEFIELD:=1;CURLIST.HEADFIELD:=327143;
CURLIST.TAILFIELD:=327143;CURLIST.ETEXAUXFIELD:=0;
CURLIST.AUXFIELD.INT:=-65536000;CURLIST.MLFIELD:=0;CURLIST.PGFIELD:=0;
SHOWNMODE:=0;{991:}PAGECONTENTS:=0;PAGETAIL:=327142;
MEM[327142].HH.RH:=0;LASTGLUE:=327145;LASTPENALTY:=0;LASTKERN:=0;
LASTNODETYPE:=-1;PAGESOFAR[7]:=0;PAGEMAXDEPTH:=0{:991};{:215}{254:}
FOR K:=13168 TO 14021 DO XEQLEVEL[K]:=1;{:254}{257:}
NONEWCONTROLSEQUENCE:=TRUE;HASH[514].LH:=0;HASH[514].RH:=0;
FOR K:=515 TO 10780 DO HASH[K]:=HASH[514];{:257}{272:}SAVEPTR:=0;
CURLEVEL:=1;CURGROUP:=0;CURBOUNDARY:=0;MAXSAVESTACK:=0;{:272}{287:}
MAGSET:=0;{:287}{383:}CURMARK[0]:=0;CURMARK[1]:=0;CURMARK[2]:=0;
CURMARK[3]:=0;CURMARK[4]:=0;{:383}{439:}CURVAL:=0;CURVALLEVEL:=0;
RADIX:=0;CURORDER:=0;{:439}{481:}FOR K:=0 TO 16 DO READOPEN[K]:=2;{:481}
{490:}CONDPTR:=0;IFLIMIT:=0;CURIF:=0;IFLINE:=0;{:490}{521:}
TEXFNAMEDEFAULT:='plain.fmt';
cli$get_value('TEXFORMATS',TEXFORMATDEFAULT,FORMATAREALENGTH);
POOLNAME:=TEXFORMATDEFAULT;
FOR I:=1 TO length(POOLFNAME)DO POOLNAME[I+FORMATAREALENGTH]:=POOLFNAME[
I];
FOR I:=1 TO 9 DO TEXFORMATDEFAULT[I+FORMATAREALENGTH]:=TEXFNAMEDEFAULT[I
];FORMATDEFAULTLENGTH:=FORMATAREALENGTH+9;{:521}{551:}
FOR K:=0 TO FONTMAX DO FONTUSED[K]:=FALSE;{:551}{556:}
NULLCHARACTER.B0:=0;NULLCHARACTER.B1:=0;NULLCHARACTER.B2:=0;
NULLCHARACTER.B3:=0;{:556}{593:}TOTALPAGES:=0;MAXV:=0;MAXH:=0;
MAXPUSH:=0;LASTBOP:=-1;DOINGLEADERS:=FALSE;DEADCYCLES:=0;CURS:=-1;{:593}
{596:}HALFBUF:=DVIBUFSIZE DIV 2;DVILIMIT:=DVIBUFSIZE;DVIPTR:=0;
DVIOFFSET:=0;DVIGONE:=0;{:596}{606:}DOWNPTR:=0;RIGHTPTR:=0;{:606}{648:}
ADJUSTTAIL:=0;LASTBADNESS:=0;{:648}{662:}PACKBEGINLINE:=0;{:662}{685:}
EMPTYFIELD.RH:=0;EMPTYFIELD.LH:=0;NULLDELIMITER.B0:=0;
NULLDELIMITER.B1:=0;NULLDELIMITER.B2:=0;NULLDELIMITER.B3:=0;{:685}{771:}
ALIGNPTR:=0;CURALIGN:=0;CURSPAN:=0;CURLOOP:=0;CURHEAD:=0;CURTAIL:=0;
{:771}{928:}FOR Z:=0 TO 503 DO BEGIN HYPHWORD[Z]:=0;HYPHLIST[Z]:=0;END;
HYPHCOUNT:=0;{:928}{990:}OUTPUTACTIVE:=FALSE;INSERTPENALTIES:=0;{:990}
{1033:}LIGATUREPRESENT:=FALSE;CANCELBOUNDARY:=FALSE;LFTHIT:=FALSE;
RTHIT:=FALSE;INSDISC:=FALSE;{:1033}{1267:}AFTERTOKEN:=0;{:1267}{1282:}
LONGHELPSEEN:=FALSE;{:1282}{1300:}FORMATIDENT:=0;{:1300}{1343:}
FOR K:=0 TO 17 DO WRITEOPEN[K]:=FALSE;{:1343}{1440:}LRTEMP:=0;LRPTR:=0;
LRPROBLEMS:=0;CURDIR:=0;{:1440}{1484:}PSEUDOFILES:=0;{:1484}{1550:}
SAROOT[6]:=0;SANULL.HH.LH:=0;SANULL.HH.RH:=0;{:1550}{1569:}SACHAIN:=0;
SALEVEL:=0;{:1569}{1593:}DISCPTR[2]:=0;DISCPTR[3]:=0;{:1593}{1638:}
WITH EDITOR[1]DO BEGIN LOGICAL:='CALLABLE_LSE';IMAGE:=1417;ENTRY:=1418;
QUITTING:=1419;EXITING:=1420;CMDTEXT:=1421;CMDOFFSET:=0;STARTQUAL:=TRUE;
EDTLIKE:=FALSE;END;WITH EDITOR[2]DO BEGIN LOGICAL:='CALLABLE_TPU';
IMAGE:=1422;ENTRY:=1423;QUITTING:=1419;EXITING:=1420;CMDTEXT:=1424;
CMDOFFSET:=5;STARTQUAL:=TRUE;EDTLIKE:=FALSE;END;
WITH EDITOR[3]DO BEGIN LOGICAL:='CALLABLE_EDT';IMAGE:=1425;ENTRY:=1426;
QUITTING:=0;EXITING:=0;CMDTEXT:=1427;CMDOFFSET:=0;STARTQUAL:=FALSE;
EDTLIKE:=TRUE;END;WITH EDITOR[4]DO BEGIN LOGICAL:='CALLABLE_TECO';
IMAGE:=1428;ENTRY:=1429;QUITTING:=0;EXITING:=0;CMDTEXT:=1430;
CMDOFFSET:=0;STARTQUAL:=FALSE;EDTLIKE:=TRUE;END;{:1638}{1666:}
WITH EMPTYEDITOR DO BEGIN LOGICAL:='';IMAGE:=0;ENTRY:=0;QUITTING:=0;
EXITING:=0;CMDTEXT:=0;CMDOFFSET:=0;STARTQUAL:=FALSE;EDTLIKE:=FALSE;END;
{:1666}IF INITFLAG THEN BEGIN{164:}FOR K:=1 TO 19 DO MEM[K].INT:=0;K:=0;
WHILE K<=19 DO BEGIN MEM[K].HH.RH:=1;MEM[K].HH.B0:=0;MEM[K].HH.B1:=0;
K:=K+4;END;MEM[6].INT:=65536;MEM[4].HH.B0:=1;MEM[10].INT:=65536;
MEM[8].HH.B0:=2;MEM[14].INT:=65536;MEM[12].HH.B0:=1;MEM[15].INT:=65536;
MEM[12].HH.B1:=1;MEM[18].INT:=-65536;MEM[16].HH.B0:=1;ROVER:=20;
MEM[ROVER].HH.RH:=327145;MEM[ROVER].HH.LH:=1000;
MEM[ROVER+1].HH.LH:=ROVER;MEM[ROVER+1].HH.RH:=ROVER;
LOMEMMAX:=ROVER+1000;MEM[LOMEMMAX].HH.RH:=0;MEM[LOMEMMAX].HH.LH:=0;
FOR K:=327131 TO 327144 DO MEM[K]:=MEM[LOMEMMAX];{790:}
MEM[327134].HH.LH:=14614;{:790}{797:}MEM[327135].HH.RH:=512;
MEM[327135].HH.LH:=0;{:797}{820:}MEM[327137].HH.B0:=1;
MEM[327138].HH.LH:=327145;MEM[327137].HH.B1:=0;{:820}{981:}
MEM[327144].HH.B1:=255;MEM[327144].HH.B0:=1;MEM[327144].HH.RH:=327144;
{:981}{988:}MEM[327142].HH.B0:=10;MEM[327142].HH.B1:=0;{:988};AVAIL:=0;
MEMEND:=327144;HIMEMMIN:=327131;VARUSED:=20;DYNUSED:=14;{:164}{222:}
EQTB[10781].HH.B0:=101;EQTB[10781].HH.RH:=0;EQTB[10781].HH.B1:=0;
FOR K:=1 TO 10780 DO EQTB[K]:=EQTB[10781];{:222}{228:}
EQTB[10782].HH.RH:=0;EQTB[10782].HH.B1:=1;EQTB[10782].HH.B0:=117;
FOR K:=10783 TO 11311 DO EQTB[K]:=EQTB[10782];
MEM[0].HH.RH:=MEM[0].HH.RH+530;{:228}{232:}EQTB[11312].HH.RH:=0;
EQTB[11312].HH.B0:=118;EQTB[11312].HH.B1:=1;
FOR K:=11313 TO 11316 DO EQTB[K]:=EQTB[11312];
FOR K:=11317 TO 11582 DO EQTB[K]:=EQTB[10781];EQTB[11583].HH.RH:=0;
EQTB[11583].HH.B0:=119;EQTB[11583].HH.B1:=1;
FOR K:=11584 TO 11838 DO EQTB[K]:=EQTB[11583];EQTB[11839].HH.RH:=0;
EQTB[11839].HH.B0:=120;EQTB[11839].HH.B1:=1;
FOR K:=11840 TO 11887 DO EQTB[K]:=EQTB[11839];EQTB[11888].HH.RH:=0;
EQTB[11888].HH.B0:=120;EQTB[11888].HH.B1:=1;
FOR K:=11889 TO 13167 DO EQTB[K]:=EQTB[11888];
FOR K:=0 TO 255 DO BEGIN EQTB[11888+K].HH.RH:=12;EQTB[12912+K].HH.RH:=K;
EQTB[12656+K].HH.RH:=1000;END;EQTB[11901].HH.RH:=5;
EQTB[11920].HH.RH:=10;EQTB[11980].HH.RH:=0;EQTB[11925].HH.RH:=14;
EQTB[11900].HH.RH:=5;EQTB[12015].HH.RH:=15;EQTB[11888].HH.RH:=9;
FOR K:=48 TO 57 DO EQTB[12912+K].HH.RH:=K+28672;
FOR K:=65 TO 90 DO BEGIN EQTB[11888+K].HH.RH:=11;
EQTB[11888+K+32].HH.RH:=11;EQTB[12912+K].HH.RH:=K+28928;
EQTB[12912+K+32].HH.RH:=K+28960;EQTB[12144+K].HH.RH:=K+32;
EQTB[12144+K+32].HH.RH:=K+32;EQTB[12400+K].HH.RH:=K;
EQTB[12400+K+32].HH.RH:=K;EQTB[12656+K].HH.RH:=999;END;{:232}{240:}
FOR K:=13168 TO 13488 DO EQTB[K].INT:=0;EQTB[13185].INT:=1000;
EQTB[13169].INT:=10000;EQTB[13209].INT:=1;EQTB[13208].INT:=25;
EQTB[13213].INT:=92;EQTB[13216].INT:=13;
FOR K:=0 TO 255 DO EQTB[13489+K].INT:=-1;EQTB[13535].INT:=0;{:240}{250:}
FOR K:=13745 TO 14021 DO EQTB[K].INT:=0;{:250}{258:}HASHUSED:=10514;
CSCOUNT:=0;EQTB[10523].HH.B0:=116;HASH[10523].RH:=505;{:258}{552:}
FONTPTR:=0;FMEMPTR:=7;FONTNAME[0]:=808;FONTAREA[0]:=339;
HYPHENCHAR[0]:=45;SKEWCHAR[0]:=-1;BCHARLABEL[0]:=0;FONTBCHAR[0]:=256;
FONTFALSEBCHAR[0]:=256;FONTBC[0]:=1;FONTEC[0]:=0;FONTSIZE[0]:=0;
FONTDSIZE[0]:=0;CHARBASE[0]:=0;WIDTHBASE[0]:=0;HEIGHTBASE[0]:=0;
DEPTHBASE[0]:=0;ITALICBASE[0]:=0;LIGKERNBASE[0]:=0;KERNBASE[0]:=0;
EXTENBASE[0]:=0;FONTGLUE[0]:=0;FONTPARAMS[0]:=7;PARAMBASE[0]:=-1;
FOR K:=0 TO 6 DO FONTINFO[K].INT:=0;{:552}{946:}
FOR K:=-TRIEOPSIZE TO TRIEOPSIZE DO TRIEOPHASH[K]:=0;
FOR K:=0 TO 255 DO TRIEUSED[K]:=0;TRIEOPPTR:=0;{:946}{951:}
TRIENOTREADY:=TRUE;TRIEL[0]:=0;TRIEC[0]:=0;TRIEPTR:=0;{:951}{1216:}
HASH[10514].RH:=1199;{:1216}{1301:}FORMATIDENT:=1265;{:1301}{1369:}
HASH[10522].RH:=1306;EQTB[10522].HH.B1:=1;EQTB[10522].HH.B0:=113;
EQTB[10522].HH.RH:=0;{:1369}{1387:}ETEXMODE:=0;{1545:}MAXREGNUM:=255;
MAXREGHELPLINE:=697;{:1545}{:1387}{1551:}FOR I:=0 TO 5 DO SAROOT[I]:=0;
{:1551}{1587:}TRIER[0]:=0;HYPHSTART:=0;{:1587}END;{:8}END;{56:}
PROCEDURE DIAGCHAR(S:ASCIICODE);VAR CH:CHAR;BEGIN CH:=XCHR[S];
IF DIAGQUAL THEN WRITE(DIAGFILE,CH);
IF CH='"'THEN IF DIAGQUAL THEN WRITE(DIAGFILE,CH)END;
PROCEDURE TEMPCHAR(S:ASCIICODE);VAR CH:CHAR;BEGIN CH:=XCHR[S];
WRITE(TEMPFILE,CH);IF CH='"'THEN WRITE(TEMPFILE,CH)END;
PROCEDURE DIAGPRINT(S:INTEGER);VAR J:POOLPOINTER;BEGIN J:=STRSTART[S];
WHILE J<STRSTART[S+1]DO BEGIN DIAGCHAR(STRPOOL[J]);J:=J+1 END;END;{:56}
{57:}PROCEDURE PRINTLN;
BEGIN CASE SELECTOR OF 19:BEGIN WRITELN(TERMOUT,CHR(13),CHR(10));
IF LOGQUAL THEN WRITELN(LOGFILE);TERMOFFSET:=0;FILEOFFSET:=0;END;
18:BEGIN IF LOGQUAL THEN WRITELN(LOGFILE);FILEOFFSET:=0;END;
17:BEGIN WRITELN(TERMOUT,CHR(13),CHR(10));TERMOFFSET:=0;END;16,20,21:;
22:WRITELN(EDCMDFILE);OTHERWISE WRITELN(WRITEFILE[SELECTOR])END;END;
{:57}{58:}PROCEDURE PRINTCHAR(S:ASCIICODE);LABEL 10;BEGIN IF{244:}
S=EQTB[13217].INT{:244}THEN IF SELECTOR<20 THEN BEGIN PRINTLN;GOTO 10;
END;{1602:}
CASE COPYERR OF PRINTIT:BEGIN IF LABELSIZE<>0 THEN DIAGCHAR(S);
IF LABELSIZE>0 THEN LABELSIZE:=LABELSIZE-1 END;IGNOREIT:;
SAVEIT:TEMPCHAR(S)END{:1602};
CASE SELECTOR OF 19:BEGIN WRITE(TERMOUT,XCHR[S]);
IF LOGQUAL THEN WRITE(LOGFILE,XCHR[S]);TERMOFFSET:=TERMOFFSET+1;
FILEOFFSET:=FILEOFFSET+1;
IF TERMOFFSET=MAXPRINTLINE THEN BEGIN WRITELN(TERMOUT,CHR(13),CHR(10));
TERMOFFSET:=0;END;
IF FILEOFFSET=MAXPRINTLINE THEN BEGIN IF LOGQUAL THEN WRITELN(LOGFILE);
FILEOFFSET:=0;END;END;18:BEGIN IF LOGQUAL THEN WRITE(LOGFILE,XCHR[S]);
FILEOFFSET:=FILEOFFSET+1;IF FILEOFFSET=MAXPRINTLINE THEN PRINTLN;END;
17:BEGIN WRITE(TERMOUT,XCHR[S]);TERMOFFSET:=TERMOFFSET+1;
IF TERMOFFSET=MAXPRINTLINE THEN PRINTLN;END;16:;
20:IF TALLY<TRICKCOUNT THEN TRICKBUF[TALLY MOD ERRORLINE]:=S;
21:BEGIN IF POOLPTR<POOLSIZE THEN BEGIN STRPOOL[POOLPTR]:=S;
POOLPTR:=POOLPTR+1;END;END;22:WRITE(EDCMDFILE,XCHR[S]);
OTHERWISE WRITE(WRITEFILE[SELECTOR],XCHR[S])END;TALLY:=TALLY+1;10:END;
{:58}{59:}PROCEDURE PRINT(S:INTEGER);LABEL 10;VAR J:POOLPOINTER;
NL:INTEGER;
BEGIN IF S>=STRPTR THEN S:=260 ELSE IF S<256 THEN IF S<0 THEN S:=260
ELSE BEGIN IF SELECTOR>20 THEN BEGIN PRINTCHAR(S);GOTO 10;END;IF({244:}
S=EQTB[13217].INT{:244})THEN IF SELECTOR<20 THEN BEGIN PRINTLN;GOTO 10;
END;NL:=EQTB[13217].INT;EQTB[13217].INT:=-1;J:=STRSTART[S];
WHILE J<STRSTART[S+1]DO BEGIN PRINTCHAR(STRPOOL[J]);J:=J+1;END;
EQTB[13217].INT:=NL;GOTO 10;END;J:=STRSTART[S];
WHILE J<STRSTART[S+1]DO BEGIN PRINTCHAR(STRPOOL[J]);J:=J+1;END;10:END;
{:59}{60:}PROCEDURE SLOWPRINT(S:INTEGER);VAR J:POOLPOINTER;
BEGIN IF(S>=STRPTR)OR(S<256)THEN PRINT(S)ELSE BEGIN J:=STRSTART[S];
WHILE J<STRSTART[S+1]DO BEGIN PRINT(STRPOOL[J]);J:=J+1;END;END;END;{:60}
{62:}PROCEDURE PRINTNL(S:STRNUMBER);
BEGIN IF((TERMOFFSET>0)AND(ODD(SELECTOR)))OR((FILEOFFSET>0)AND(SELECTOR
>=18))THEN PRINTLN;PRINT(S);END;{:62}{63:}
PROCEDURE PRINTESC(S:STRNUMBER);VAR C:INTEGER;BEGIN{243:}
C:=EQTB[13213].INT{:243};IF C>=0 THEN IF C<256 THEN PRINT(C);
SLOWPRINT(S);END;{:63}{64:}PROCEDURE PRINTTHEDIGS(K:EIGHTBITS);
BEGIN WHILE K>0 DO BEGIN K:=K-1;
IF DIG[K]<10 THEN PRINTCHAR(48+DIG[K])ELSE PRINTCHAR(55+DIG[K]);END;END;
{:64}{65:}PROCEDURE PRINTINT(N:INTEGER);VAR K:0..23;M:INTEGER;
BEGIN K:=0;IF N<0 THEN BEGIN PRINTCHAR(45);
IF N>-100000000 THEN N:=-N ELSE BEGIN M:=-1-N;N:=M DIV 10;
M:=(M MOD 10)+1;K:=1;IF M<10 THEN DIG[0]:=M ELSE BEGIN DIG[0]:=0;N:=N+1;
END;END;END;REPEAT DIG[K]:=N MOD 10;N:=N DIV 10;K:=K+1;UNTIL N=0;
PRINTTHEDIGS(K);END;{:65}{262:}PROCEDURE PRINTCS(P:INTEGER);
BEGIN IF P<514 THEN IF P>=257 THEN IF P=513 THEN BEGIN PRINTESC(507);
PRINTESC(508);END ELSE BEGIN PRINTESC(P-257);
IF EQTB[11888+P-257].HH.RH=11 THEN PRINTCHAR(32);
END ELSE IF P<1 THEN PRINTESC(509)ELSE PRINT(P-1)ELSE IF P>=10781 THEN
PRINTESC(509)ELSE IF(HASH[P].RH<0)OR(HASH[P].RH>=STRPTR)THEN PRINTESC(
510)ELSE BEGIN PRINTESC(HASH[P].RH);PRINTCHAR(32);END;END;{:262}{263:}
PROCEDURE SPRINTCS(P:HALFWORD);
BEGIN IF P<514 THEN IF P<257 THEN PRINT(P-1)ELSE IF P<513 THEN PRINTESC(
P-257)ELSE BEGIN PRINTESC(507);PRINTESC(508);
END ELSE PRINTESC(HASH[P].RH);END;{:263}{518:}
PROCEDURE PRINTFILENAME(N,A,E:INTEGER);BEGIN SLOWPRINT(A);SLOWPRINT(N);
SLOWPRINT(E);END;{:518}{699:}PROCEDURE PRINTSIZE(S:INTEGER);
BEGIN IF S=0 THEN PRINTESC(415)ELSE IF S=16 THEN PRINTESC(416)ELSE
PRINTESC(417);END;{:699}{1355:}PROCEDURE PRINTWRITEWHATSIT(S:STRNUMBER;
P:HALFWORD);BEGIN PRINTESC(S);
IF MEM[P+1].HH.LH<16 THEN PRINTINT(MEM[P+1].HH.LH)ELSE IF MEM[P+1].HH.LH
=16 THEN PRINTCHAR(42)ELSE PRINTCHAR(45);END;{:1355}{1555:}
PROCEDURE PRINTSANUM(Q:HALFWORD);VAR N:HALFWORD;
BEGIN IF MEM[Q].HH.B0<32 THEN N:=MEM[Q+1].HH.RH ELSE BEGIN N:=MEM[Q].HH.
B0 MOD 16;Q:=MEM[Q].HH.RH;N:=N+16*MEM[Q].HH.B0;Q:=MEM[Q].HH.RH;
N:=N+256*(MEM[Q].HH.B0+16*MEM[MEM[Q].HH.RH].HH.B0);END;PRINTINT(N);END;
{:1555}{1649:}PROCEDURE EDITLOCATE(LINE,COL:INTEGER);BEGIN PRINT(1431);
PRINTINT(LINE);PRINTCHAR(44);PRINTINT(COL);PRINT(1432)END;{:1649}{1650:}
FUNCTION EDITFILE(STACKITEM:INSTATERECORD;LINE:INTEGER):BOOLEAN;FORWARD;
{:1650}{78:}PROCEDURE NORMALIZESELECTOR;FORWARD;PROCEDURE GETTOKEN;
FORWARD;PROCEDURE TERMINPUT;FORWARD;PROCEDURE SHOWCONTEXT;FORWARD;
PROCEDURE BEGINFILEREADING;FORWARD;PROCEDURE OPENLOGFILE;FORWARD;
PROCEDURE CLOSEFILESANDTERMINATE;FORWARD;PROCEDURE CLEARFORERRORPROMPT;
FORWARD;PROCEDURE GIVEERRHELP;FORWARD;{PROCEDURE DEBUGHELP;FORWARD;}
{:78}{81:}PROCEDURE JUMPOUT;BEGIN GOTO 9998;END;{:81}{82:}
PROCEDURE ERROR;LABEL 22,10;VAR C:ASCIICODE;S1,S2,S3,S4:INTEGER;
BEGIN IF HISTORY<2 THEN HISTORY:=2;PRINTCHAR(46);{1604:}
COPYERR:=IGNOREIT;RESET(TEMPFILE){:1604};SHOWCONTEXT;
IF INTERACTION=3 THEN{83:}WHILE TRUE DO BEGIN 22:CLEARFORERRORPROMPT;
BEGIN WAKEUPTERMINAL;PRINT(265);TERMINPUT;END;
IF LAST=FIRST THEN GOTO 10;C:=BUFFER[FIRST];IF C>=97 THEN C:=C-32;{84:}
CASE C OF 48,49,50,51,52,53,54,55,56,57:IF DELETIONSALLOWED THEN{88:}
BEGIN S1:=CURTOK;S2:=CURCMD;S3:=CURCHR;S4:=ALIGNSTATE;
ALIGNSTATE:=1000000;OKTOINTERRUPT:=FALSE;
IF(LAST>FIRST+1)AND(BUFFER[FIRST+1]>=48)AND(BUFFER[FIRST+1]<=57)THEN C:=
C*10+BUFFER[FIRST+1]-48*11 ELSE C:=C-48;WHILE C>0 DO BEGIN GETTOKEN;
C:=C-1;END;CURTOK:=S1;CURCMD:=S2;CURCHR:=S3;ALIGNSTATE:=S4;
OKTOINTERRUPT:=TRUE;BEGIN HELPPTR:=2;HELPLINE[1]:=280;HELPLINE[0]:=281;
END;SHOWCONTEXT;GOTO 22;END{:88};{68:BEGIN DEBUGHELP;GOTO 22;END;}
69:IF BASEPTR>0 THEN BEGIN IF EDITFILE(INPUTSTACK[BASEPTR],LINE)THEN
BEGIN IF CONTINUEQUAL THEN BEGIN SHOWCONTEXT;GOTO 22;
END ELSE BEGIN INTERACTION:=2;JUMPOUT;END END ELSE BEGIN PRINTNL(266);
SLOWPRINT(INPUTSTACK[BASEPTR].NAMEFIELD);PRINT(267);PRINTINT(LINE);
INTERACTION:=2;JUMPOUT;END END;72:{89:}
BEGIN IF USEERRHELP THEN BEGIN GIVEERRHELP;USEERRHELP:=FALSE;
END ELSE BEGIN IF HELPPTR=0 THEN BEGIN HELPPTR:=2;HELPLINE[1]:=282;
HELPLINE[0]:=283;END;REPEAT HELPPTR:=HELPPTR-1;PRINT(HELPLINE[HELPPTR]);
PRINTLN;UNTIL HELPPTR=0;END;BEGIN HELPPTR:=4;HELPLINE[3]:=284;
HELPLINE[2]:=283;HELPLINE[1]:=285;HELPLINE[0]:=286;END;GOTO 22;END{:89};
73:{87:}BEGIN BEGINFILEREADING;
IF LAST>FIRST+1 THEN BEGIN CURINPUT.LOCFIELD:=FIRST+1;BUFFER[FIRST]:=32;
END ELSE BEGIN BEGIN WAKEUPTERMINAL;PRINT(279);TERMINPUT;END;
CURINPUT.LOCFIELD:=FIRST;END;FIRST:=LAST;CURINPUT.LIMITFIELD:=LAST-1;
GOTO 10;END{:87};81,82,83:{86:}BEGIN ERRORCOUNT:=0;INTERACTION:=0+C-81;
PRINT(274);CASE C OF 81:PRINTESC(275);82:PRINTESC(276);83:PRINTESC(277);
END;PRINT(278);PRINTLN;IF ODD(SELECTOR)THEN WRITELN(TERMOUT);
IF C=81 THEN SELECTOR:=SELECTOR-1;GOTO 10;END{:86};
88:BEGIN INTERACTION:=2;JUMPOUT;END;OTHERWISE END;{85:}BEGIN PRINT(268);
PRINTNL(269);PRINTNL(270);IF BASEPTR>0 THEN PRINT(271);
IF DELETIONSALLOWED THEN PRINTNL(272);PRINTNL(273);END{:85}{:84};
END{:83};ERRORCOUNT:=ERRORCOUNT+1;
IF ERRORCOUNT=100 THEN BEGIN PRINTNL(264);HISTORY:=3;JUMPOUT;END;{90:}
IF INTERACTION>0 THEN SELECTOR:=SELECTOR-1;
IF USEERRHELP THEN BEGIN PRINTLN;GIVEERRHELP;
END ELSE WHILE HELPPTR>0 DO BEGIN HELPPTR:=HELPPTR-1;
PRINTNL(HELPLINE[HELPPTR]);END;PRINTLN;
IF INTERACTION>0 THEN SELECTOR:=SELECTOR+1;PRINTLN{:90};10:END;{:82}
{93:}PROCEDURE FATALERROR(S:STRNUMBER);BEGIN NORMALIZESELECTOR;
BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);COPYERR:=SAVEIT;
REWRITE(TEMPFILE);PRINT(288);END;BEGIN HELPPTR:=1;HELPLINE[0]:=S;END;
BEGIN IF INTERACTION=3 THEN INTERACTION:=2;IF LOGOPENED THEN ERROR;
{IF INTERACTION>0 THEN DEBUGHELP;}HISTORY:=3;JUMPOUT;END;END;{:93}{94:}
PROCEDURE OVERFLOW(S:STRNUMBER;N:INTEGER);BEGIN NORMALIZESELECTOR;
BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);COPYERR:=SAVEIT;
REWRITE(TEMPFILE);PRINT(289);END;PRINT(S);PRINTCHAR(61);PRINTINT(N);
PRINTCHAR(93);BEGIN HELPPTR:=2;HELPLINE[1]:=290;HELPLINE[0]:=291;END;
BEGIN IF INTERACTION=3 THEN INTERACTION:=2;IF LOGOPENED THEN ERROR;
{IF INTERACTION>0 THEN DEBUGHELP;}HISTORY:=3;JUMPOUT;END;END;{:94}{95:}
PROCEDURE CONFUSION(S:STRNUMBER);BEGIN NORMALIZESELECTOR;
IF HISTORY<2 THEN BEGIN BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;
PRINTNL(263);COPYERR:=SAVEIT;REWRITE(TEMPFILE);PRINT(292);END;PRINT(S);
PRINTCHAR(41);BEGIN HELPPTR:=1;HELPLINE[0]:=293;END;
END ELSE BEGIN BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);
COPYERR:=SAVEIT;REWRITE(TEMPFILE);PRINT(294);END;BEGIN HELPPTR:=2;
HELPLINE[1]:=295;HELPLINE[0]:=296;END;END;
BEGIN IF INTERACTION=3 THEN INTERACTION:=2;IF LOGOPENED THEN ERROR;
{IF INTERACTION>0 THEN DEBUGHELP;}HISTORY:=3;JUMPOUT;END;END;{:95}{:4}
{27:}FUNCTION AOPENIN(VAR F:ALPHAFILE):BOOLEAN;
BEGIN OPEN(F,NAMEOFFILE, readonly ,user_action:=USERRESET,
error:=continue);
IF STATUS(F)>0 THEN AOPENIN:=FALSE ELSE BEGIN RESET(F,error:=continue);
AOPENIN:=STATUS(F)<=0;END;END;
FUNCTION AOPENOUT(VAR F:ALPHAFILE):BOOLEAN;
BEGIN OPEN(F,NAMEOFFILE, new ,16383,disposition:=delete, default :=
DEFAULTNAME,user_action:=USERREWRITE,error:=continue);
IF STATUS(F)>0 THEN AOPENOUT:=FALSE ELSE BEGIN LINELIMIT(F,MAXINT);
REWRITE(F,error:=continue);AOPENOUT:=STATUS(F)<=0;END;END;
FUNCTION BOPENIN(VAR F:BYTEFILE):BOOLEAN;
BEGIN OPEN(F,NAMEOFFILE, readonly ,user_action:=USERRESET,
error:=continue);
IF STATUS(F)>0 THEN BOPENIN:=FALSE ELSE BEGIN RESET(F,error:=continue);
BOPENIN:=STATUS(F)<=0;END;END;FUNCTION BOPENOUT(VAR F:BYTEFILE):BOOLEAN;
BEGIN OPEN(F,NAMEOFFILE, new ,disposition:=delete, default :=DEFAULTNAME
,user_action:=USERREWRITE,error:=continue);
IF STATUS(F)>0 THEN BOPENOUT:=FALSE ELSE BEGIN REWRITE(F,error:=continue
);BOPENOUT:=STATUS(F)<=0;END;END;
FUNCTION WOPENIN(VAR F:WORDFILE):BOOLEAN;
BEGIN OPEN(F,NAMEOFFILE, readonly ,user_action:=USERRESET,
error:=continue);
IF STATUS(F)>0 THEN WOPENIN:=FALSE ELSE BEGIN RESET(F,error:=continue);
WOPENIN:=STATUS(F)<=0;END;FMTCOUNT:=0;END;
FUNCTION WOPENOUT(VAR F:WORDFILE):BOOLEAN;
BEGIN OPEN(F,NAMEOFFILE, new ,disposition:=delete,user_action:=
USERREWRITE,error:=continue);
IF STATUS(F)>0 THEN WOPENOUT:=FALSE ELSE BEGIN REWRITE(F,error:=continue
);WOPENOUT:=STATUS(F)<=0;END;FMTCOUNT:=0;END;{:27}{28:}
PROCEDURE ACLOSE(VAR F:ALPHAFILE);
BEGIN CLOSE(F,disposition:=save,error:=continue);END;
PROCEDURE BCLOSE(VAR F:BYTEFILE);
BEGIN CLOSE(F,disposition:=save,error:=continue);END;
PROCEDURE WCLOSE(VAR F:WORDFILE);
BEGIN CLOSE(F,disposition:=save,error:=continue);END;{:28}{31:}
FUNCTION INPUTLN(VAR F:ALPHAFILE;BYPASSEOLN:BOOLEAN):BOOLEAN;LABEL 40;
VAR LEN:INTEGER;K:0..BUFSIZE;BEGIN LAST:=FIRST;
IF STATUS(F)<>0 THEN INPUTLN:=FALSE ELSE BEGIN WHILE NOT EOLN(F)DO BEGIN
READ(F,AUXBUF,error:=continue);LEN:=AUXBUF.length;
IF LAST+LEN>=MAXBUFSTACK THEN BEGIN IF LAST+LEN<BUFSIZE THEN MAXBUFSTACK
:=LAST+LEN ELSE{35:}
IF FORMATIDENT=0 THEN BEGIN WRITELN(TERMOUT,'Buffer size exceeded!');
GOTO 9999;END ELSE BEGIN CURINPUT.LOCFIELD:=FIRST;
CURINPUT.LIMITFIELD:=LAST-1;OVERFLOW(257,BUFSIZE);END{:35};END;
FOR K:=LAST TO LAST+LEN-1 DO BUFFER[K]:=XORD[AUXBUF[K-LAST+1]];
LAST:=LAST+LEN;END;
40:IF LAST>FIRST THEN IF BUFFER[LAST-1]=32 THEN BEGIN LAST:=LAST-1;
GOTO 40;END;INPUTLN:=TRUE;READLN(F,error:=continue);END;END;{:31}{37:}
FUNCTION INITTERMINAL:BOOLEAN;LABEL 10;
VAR COMMANDLINE:PACKED ARRAY[1..256]OF CHAR;LEN:SIXTEENBITS;I:INTEGER;
BEGIN BEGIN OPEN(TERMIN, 'SYS$INPUT' );RESET(TERMIN);
INFAB:= PAS$FAB(TERMIN);INRAB:= PAS$RAB(TERMIN);END;
IF CMDLINEPRESENT THEN BEGIN cli$get_value('COMMAND_LINE',COMMANDLINE,
LEN);I:=1;WHILE(I<=LEN)AND(COMMANDLINE[I]=' ')DO I:=I+1;
IF I<=LEN THEN BEGIN CURINPUT.LOCFIELD:=FIRST;LAST:=FIRST;
WHILE I<=LEN DO BEGIN BUFFER[LAST]:=XORD[COMMANDLINE[I]];LAST:=LAST+1;
I:=I+1;END;INITTERMINAL:=TRUE;GOTO 10;END;END;
WHILE TRUE DO BEGIN WAKEUPTERMINAL;WRITE(TERMOUT,'**');
IF ODD(SELECTOR)THEN WRITELN(TERMOUT);
IF NOT INPUTLN(TERMIN,TRUE)THEN BEGIN WRITE(TERMOUT,CHR(13),CHR(10));
WRITELN(TERMOUT,'! End of file on the terminal... why?',CHR(13),CHR(10))
;INITTERMINAL:=FALSE;GOTO 10;END;CURINPUT.LOCFIELD:=FIRST;
WHILE(CURINPUT.LOCFIELD<LAST)AND(BUFFER[CURINPUT.LOCFIELD]=32)DO
CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
IF CURINPUT.LOCFIELD<LAST THEN BEGIN INITTERMINAL:=TRUE;GOTO 10;END;
WRITELN(TERMOUT,'Please type the name of your input file.',CHR(13),CHR(
10));END;10:END;{:37}{43:}FUNCTION MAKESTRING:STRNUMBER;
BEGIN IF STRPTR=MAXSTRINGS THEN OVERFLOW(259,MAXSTRINGS-INITSTRPTR);
STRPTR:=STRPTR+1;STRSTART[STRPTR]:=POOLPTR;MAKESTRING:=STRPTR-1;END;
{:43}{45:}FUNCTION STREQBUF(S:STRNUMBER;K:INTEGER):BOOLEAN;LABEL 45;
VAR J:POOLPOINTER;RESULT:BOOLEAN;BEGIN J:=STRSTART[S];
WHILE J<STRSTART[S+1]DO BEGIN IF STRPOOL[J]<>BUFFER[K]THEN BEGIN RESULT
:=FALSE;GOTO 45;END;J:=J+1;K:=K+1;END;RESULT:=TRUE;45:STREQBUF:=RESULT;
END;{:45}{46:}FUNCTION STREQSTR(S,T:STRNUMBER):BOOLEAN;LABEL 45;
VAR J,K:POOLPOINTER;RESULT:BOOLEAN;BEGIN RESULT:=FALSE;
IF(STRSTART[S+1]-STRSTART[S])<>(STRSTART[T+1]-STRSTART[T])THEN GOTO 45;
J:=STRSTART[S];K:=STRSTART[T];
WHILE J<STRSTART[S+1]DO BEGIN IF STRPOOL[J]<>STRPOOL[K]THEN GOTO 45;
J:=J+1;K:=K+1;END;RESULT:=TRUE;45:STREQSTR:=RESULT;END;{:46}{47:}
FUNCTION GETSTRINGSSTARTED:BOOLEAN;LABEL 30,10;VAR K,L:0..255;M,N:CHAR;
G:STRNUMBER;A:INTEGER;C:BOOLEAN;BEGIN POOLPTR:=0;STRPTR:=0;
STRSTART[0]:=0;{48:}FOR K:=0 TO 255 DO BEGIN IF({49:}
(K<32)OR((K>126)AND(K<160))OR(K=255)OR((K>=160)AND NOT EIGHTQUAL){:49}
)THEN BEGIN BEGIN STRPOOL[POOLPTR]:=94;POOLPTR:=POOLPTR+1;END;
BEGIN STRPOOL[POOLPTR]:=94;POOLPTR:=POOLPTR+1;END;
IF K<64 THEN BEGIN STRPOOL[POOLPTR]:=K+64;POOLPTR:=POOLPTR+1;
END ELSE IF K<128 THEN BEGIN STRPOOL[POOLPTR]:=K-64;POOLPTR:=POOLPTR+1;
END ELSE BEGIN L:=K DIV 16;IF L<10 THEN BEGIN STRPOOL[POOLPTR]:=L+48;
POOLPTR:=POOLPTR+1;END ELSE BEGIN STRPOOL[POOLPTR]:=L+87;
POOLPTR:=POOLPTR+1;END;L:=K MOD 16;
IF L<10 THEN BEGIN STRPOOL[POOLPTR]:=L+48;POOLPTR:=POOLPTR+1;
END ELSE BEGIN STRPOOL[POOLPTR]:=L+87;POOLPTR:=POOLPTR+1;END;END;
END ELSE BEGIN STRPOOL[POOLPTR]:=K;POOLPTR:=POOLPTR+1;END;G:=MAKESTRING;
END{:48};{51:}NAMEOFFILE:=POOLNAME;
IF AOPENIN(POOLFILE)THEN BEGIN C:=FALSE;REPEAT{52:}
BEGIN IF EOF(POOLFILE)THEN BEGIN WAKEUPTERMINAL;
WRITELN(TERMOUT,'! ETEX.POOL has no check sum.',CHR(13),CHR(10));
ACLOSE(POOLFILE);GETSTRINGSSTARTED:=FALSE;GOTO 10;END;
READ(POOLFILE,M,N);IF M='*'THEN{53:}BEGIN A:=0;K:=1;
WHILE TRUE DO BEGIN IF(XORD[N]<48)OR(XORD[N]>57)THEN BEGIN
WAKEUPTERMINAL;
WRITELN(TERMOUT,'! ETEX.POOL check sum doesn''t have nine digits.',CHR(
13),CHR(10));ACLOSE(POOLFILE);GETSTRINGSSTARTED:=FALSE;GOTO 10;END;
A:=10*A+XORD[N]-48;IF K=9 THEN GOTO 30;K:=K+1;READ(POOLFILE,N);END;
30:IF A<>340764991 THEN BEGIN WAKEUPTERMINAL;
WRITELN(TERMOUT,'! ETEX.POOL doesn''t match; TANGLE me again.',CHR(13),
CHR(10));ACLOSE(POOLFILE);GETSTRINGSSTARTED:=FALSE;GOTO 10;END;C:=TRUE;
END{:53}
ELSE BEGIN IF(XORD[M]<48)OR(XORD[M]>57)OR(XORD[N]<48)OR(XORD[N]>57)THEN
BEGIN WAKEUPTERMINAL;
WRITELN(TERMOUT,'! ETEX.POOL line doesn''t begin with two digits.',CHR(
13),CHR(10));ACLOSE(POOLFILE);GETSTRINGSSTARTED:=FALSE;GOTO 10;END;
L:=XORD[M]*10+XORD[N]-48*11;
IF POOLPTR+L+STRINGVACANCIES>POOLSIZE THEN BEGIN WAKEUPTERMINAL;
WRITELN(TERMOUT,'! You have to increase POOLSIZE.',CHR(13),CHR(10));
ACLOSE(POOLFILE);GETSTRINGSSTARTED:=FALSE;GOTO 10;END;
FOR K:=1 TO L DO BEGIN IF EOLN(POOLFILE)THEN M:=' 'ELSE READ(POOLFILE,M)
;BEGIN STRPOOL[POOLPTR]:=XORD[M];POOLPTR:=POOLPTR+1;END;END;
READLN(POOLFILE);G:=MAKESTRING;END;END{:52};UNTIL C;ACLOSE(POOLFILE);
GETSTRINGSSTARTED:=TRUE;END ELSE BEGIN WAKEUPTERMINAL;
WRITELN(TERMOUT,'! I can''t read ETEX.POOL.',CHR(13),CHR(10));
ACLOSE(POOLFILE);GETSTRINGSSTARTED:=FALSE;GOTO 10;END{:51};10:END;{:47}
{66:}PROCEDURE PRINTTWO(N:INTEGER);BEGIN N:=ABS(N)MOD 100;
PRINTCHAR(48+(N DIV 10));PRINTCHAR(48+(N MOD 10));END;{:66}{67:}
PROCEDURE PRINTHEX(N:INTEGER);VAR K:0..22;BEGIN K:=0;PRINTCHAR(34);
REPEAT DIG[K]:=N MOD 16;N:=N DIV 16;K:=K+1;UNTIL N=0;PRINTTHEDIGS(K);
END;{:67}{69:}PROCEDURE PRINTROMANINT(N:INTEGER);LABEL 10;
VAR J,K:POOLPOINTER;U,V:NONNEGATIVEINTEGER;BEGIN J:=STRSTART[261];
V:=1000;WHILE TRUE DO BEGIN WHILE N>=V DO BEGIN PRINTCHAR(STRPOOL[J]);
N:=N-V;END;IF N<=0 THEN GOTO 10;K:=J+2;U:=V DIV(STRPOOL[K-1]-48);
IF STRPOOL[K-1]=50 THEN BEGIN K:=K+2;U:=U DIV(STRPOOL[K-1]-48);END;
IF N+U>=V THEN BEGIN PRINTCHAR(STRPOOL[K]);N:=N+U;END ELSE BEGIN J:=J+2;
V:=V DIV(STRPOOL[J-1]-48);END;END;10:END;{:69}{70:}
PROCEDURE PRINTCURRENTSTRING;VAR J:POOLPOINTER;
BEGIN J:=STRSTART[STRPTR];
WHILE J<POOLPTR DO BEGIN PRINTCHAR(STRPOOL[J]);J:=J+1;END;END;{:70}{71:}
PROCEDURE TERMINPUT;VAR K:0..BUFSIZE;
BEGIN IF ODD(SELECTOR)THEN WRITELN(TERMOUT);
IF NOT INPUTLN(TERMIN,TRUE)THEN FATALERROR(262);INRAB^.RAB$V_PTA:=FALSE;
TERMOFFSET:=0;SELECTOR:=SELECTOR-1;
IF LAST<>FIRST THEN FOR K:=FIRST TO LAST-1 DO PRINT(BUFFER[K]);PRINTLN;
SELECTOR:=SELECTOR+1;END;{:71}{91:}PROCEDURE INTERROR(N:INTEGER);
BEGIN PRINT(287);PRINTINT(N);PRINTCHAR(41);ERROR;END;{:91}{92:}
PROCEDURE NORMALIZESELECTOR;
BEGIN IF LOGOPENED THEN SELECTOR:=19 ELSE SELECTOR:=17;
IF JOBNAME=0 THEN OPENLOGFILE;
IF INTERACTION=0 THEN SELECTOR:=SELECTOR-1;END;{:92}{98:}
PROCEDURE PAUSEFORINSTRUCTIONS;
BEGIN IF OKTOINTERRUPT THEN BEGIN INTERACTION:=3;
IF(SELECTOR=18)OR(SELECTOR=16)THEN SELECTOR:=SELECTOR+1;
BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);COPYERR:=SAVEIT;
REWRITE(TEMPFILE);PRINT(297);END;BEGIN HELPPTR:=3;HELPLINE[2]:=298;
HELPLINE[1]:=299;HELPLINE[0]:=300;END;DELETIONSALLOWED:=FALSE;ERROR;
DELETIONSALLOWED:=TRUE;INTERRUPT:=0;END;END;{:98}{100:}
FUNCTION HALF(X:INTEGER):INTEGER;
BEGIN IF ODD(X)THEN HALF:=(X+1)DIV 2 ELSE HALF:=X DIV 2;END;{:100}{102:}
FUNCTION ROUNDDECIMALS(K:SMALLNUMBER):SCALED;VAR A:INTEGER;BEGIN A:=0;
WHILE K>0 DO BEGIN K:=K-1;A:=(A+DIG[K]*131072)DIV 10;END;
ROUNDDECIMALS:=(A+1)DIV 2;END;{:102}{103:}
PROCEDURE PRINTSCALED(S:SCALED);VAR DELTA:SCALED;
BEGIN IF S<0 THEN BEGIN PRINTCHAR(45);S:=-S;END;PRINTINT(S DIV 65536);
PRINTCHAR(46);S:=10*(S MOD 65536)+5;DELTA:=10;
REPEAT IF DELTA>65536 THEN S:=S-17232;PRINTCHAR(48+(S DIV 65536));
S:=10*(S MOD 65536);DELTA:=DELTA*10;UNTIL S<=DELTA;END;{:103}{105:}
FUNCTION MULTANDADD(N:INTEGER;X,Y,MAXANSWER:SCALED):SCALED;
BEGIN IF N<0 THEN BEGIN X:=-X;N:=-N;END;
IF N=0 THEN MULTANDADD:=Y ELSE IF((X<=(MAXANSWER-Y)DIV N)AND(-X<=(
MAXANSWER+Y)DIV N))THEN MULTANDADD:=N*X+Y ELSE BEGIN ARITHERROR:=TRUE;
MULTANDADD:=0;END;END;{:105}{106:}FUNCTION XOVERN(X:SCALED;
N:INTEGER):SCALED;VAR NEGATIVE:BOOLEAN;BEGIN NEGATIVE:=FALSE;
IF N=0 THEN BEGIN ARITHERROR:=TRUE;XOVERN:=0;REMAINDER:=X;
END ELSE BEGIN IF N<0 THEN BEGIN X:=-X;N:=-N;NEGATIVE:=TRUE;END;
IF X>=0 THEN BEGIN XOVERN:=X DIV N;REMAINDER:=X MOD N;
END ELSE BEGIN XOVERN:=-((-X)DIV N);REMAINDER:=-((-X)MOD N);END;END;
IF NEGATIVE THEN REMAINDER:=-REMAINDER;END;{:106}{107:}
FUNCTION XNOVERD(X:SCALED;N,D:INTEGER):SCALED;VAR POSITIVE:BOOLEAN;
T,U,V:NONNEGATIVEINTEGER;
BEGIN IF X>=0 THEN POSITIVE:=TRUE ELSE BEGIN X:=-X;POSITIVE:=FALSE;END;
T:=(X MOD 32768)*N;U:=(X DIV 32768)*N+(T DIV 32768);
V:=(U MOD D)*32768+(T MOD 32768);
IF U DIV D>=32768 THEN ARITHERROR:=TRUE ELSE U:=32768*(U DIV D)+(V DIV D
);IF POSITIVE THEN BEGIN XNOVERD:=U;REMAINDER:=V MOD D;
END ELSE BEGIN XNOVERD:=-U;REMAINDER:=-(V MOD D);END;END;{:107}{108:}
FUNCTION BADNESS(T,S:SCALED):HALFWORD;VAR R:INTEGER;
BEGIN IF T=0 THEN BADNESS:=0 ELSE IF S<=0 THEN BADNESS:=10000 ELSE BEGIN
IF T<=7230584 THEN R:=(T*297)DIV S ELSE IF S>=1663497 THEN R:=T DIV(S
DIV 297)ELSE R:=T;
IF R>1290 THEN BADNESS:=10000 ELSE BADNESS:=(R*R*R+131072)DIV 262144;
END;END;{:108}{114:}{PROCEDURE PRINTWORD(W:MEMORYWORD);
BEGIN PRINTINT(W.INT);PRINTCHAR(32);PRINTSCALED(W.INT);PRINTCHAR(32);
PRINTSCALED(ROUND(65536*DBLE(W.GR)));PRINTLN;PRINTINT(W.HH.LH);
PRINTCHAR(61);PRINTINT(W.HH.B0);PRINTCHAR(58);PRINTINT(W.HH.B1);
PRINTCHAR(59);PRINTINT(W.HH.RH);PRINTCHAR(32);PRINTINT(W.QQQQ.B0);
PRINTCHAR(58);PRINTINT(W.QQQQ.B1);PRINTCHAR(58);PRINTINT(W.QQQQ.B2);
PRINTCHAR(58);PRINTINT(W.QQQQ.B3);END;}{:114}{119:}{292:}
PROCEDURE SHOWTOKENLIST(P,Q:INTEGER;L:INTEGER);LABEL 10;VAR M,C:INTEGER;
MATCHCHR:ASCIICODE;N:ASCIICODE;BEGIN MATCHCHR:=35;N:=48;TALLY:=0;
WHILE(P<>0)AND(TALLY<L)DO BEGIN IF P=Q THEN{320:}
BEGIN FIRSTCOUNT:=TALLY;TRICKCOUNT:=TALLY+1+ERRORLINE-HALFERRORLINE;
IF TRICKCOUNT<ERRORLINE THEN TRICKCOUNT:=ERRORLINE;END{:320};{293:}
IF(P<HIMEMMIN)OR(P>MEMEND)THEN BEGIN PRINTESC(310);GOTO 10;END;
IF MEM[P].HH.LH>=4095 THEN PRINTCS(MEM[P].HH.LH-4095)ELSE BEGIN M:=MEM[P
].HH.LH DIV 256;C:=MEM[P].HH.LH MOD 256;
IF MEM[P].HH.LH<0 THEN PRINTESC(562)ELSE{294:}
CASE M OF 1,2,3,4,7,8,10,11,12:PRINT(C);6:BEGIN PRINT(C);PRINT(C);END;
5:BEGIN PRINT(MATCHCHR);
IF C<=9 THEN PRINTCHAR(C+48)ELSE BEGIN PRINTCHAR(33);GOTO 10;END;END;
13:BEGIN MATCHCHR:=C;PRINT(C);N:=N+1;PRINTCHAR(N);IF N>57 THEN GOTO 10;
END;14:IF C=0 THEN PRINT(563);OTHERWISE PRINTESC(562)END{:294};END{:293}
;P:=MEM[P].HH.RH;END;IF P<>0 THEN PRINTESC(411);10:END;{:292}{306:}
PROCEDURE RUNAWAY;VAR P:HALFWORD;
BEGIN IF SCANNERSTATUS>1 THEN BEGIN PRINTNL(577);
CASE SCANNERSTATUS OF 2:BEGIN PRINT(578);P:=DEFREF;END;
3:BEGIN PRINT(579);P:=327141;END;4:BEGIN PRINT(580);P:=327140;END;
5:BEGIN PRINT(581);P:=DEFREF;END;END;PRINTCHAR(63);PRINTLN;
SHOWTOKENLIST(MEM[P].HH.RH,0,ERRORLINE-10);END;END;{:306}{:119}{120:}
FUNCTION GETAVAIL:HALFWORD;VAR P:HALFWORD;BEGIN P:=AVAIL;
IF P<>0 THEN AVAIL:=MEM[AVAIL].HH.RH ELSE IF MEMEND<MEMMAX THEN BEGIN
MEMEND:=MEMEND+1;P:=MEMEND;END ELSE BEGIN HIMEMMIN:=HIMEMMIN-1;
P:=HIMEMMIN;IF HIMEMMIN<=LOMEMMAX THEN BEGIN RUNAWAY;
OVERFLOW(301,MEMMAX+1-MEMMIN);END;END;MEM[P].HH.RH:=0;
DYNUSED:=DYNUSED+1;GETAVAIL:=P;END;{:120}{123:}
PROCEDURE FLUSHLIST(P:HALFWORD);VAR Q,R:HALFWORD;
BEGIN IF P<>0 THEN BEGIN R:=P;REPEAT Q:=R;R:=MEM[R].HH.RH;
DYNUSED:=DYNUSED-1;UNTIL R=0;MEM[Q].HH.RH:=AVAIL;AVAIL:=P;END;END;{:123}
{125:}FUNCTION GETNODE(S:INTEGER):HALFWORD;LABEL 40,10,20;
VAR P:HALFWORD;Q:HALFWORD;R:INTEGER;T:INTEGER;BEGIN 20:P:=ROVER;
REPEAT{127:}Q:=P+MEM[P].HH.LH;
WHILE(MEM[Q].HH.RH=327145)DO BEGIN T:=MEM[Q+1].HH.RH;
IF Q=ROVER THEN ROVER:=T;MEM[T+1].HH.LH:=MEM[Q+1].HH.LH;
MEM[MEM[Q+1].HH.LH+1].HH.RH:=T;Q:=Q+MEM[Q].HH.LH;END;R:=Q-S;
IF R>P+1 THEN{128:}BEGIN MEM[P].HH.LH:=R-P;ROVER:=P;GOTO 40;END{:128};
IF R=P THEN IF MEM[P+1].HH.RH<>P THEN{129:}BEGIN ROVER:=MEM[P+1].HH.RH;
T:=MEM[P+1].HH.LH;MEM[ROVER+1].HH.LH:=T;MEM[T+1].HH.RH:=ROVER;GOTO 40;
END{:129};MEM[P].HH.LH:=Q-P{:127};P:=MEM[P+1].HH.RH;UNTIL P=ROVER;
IF S=1073741824 THEN BEGIN GETNODE:=327145;GOTO 10;END;
IF LOMEMMAX+2<HIMEMMIN THEN IF LOMEMMAX+2<=327145 THEN{126:}
BEGIN IF HIMEMMIN-LOMEMMAX>=1998 THEN T:=LOMEMMAX+1000 ELSE T:=LOMEMMAX
+1+(HIMEMMIN-LOMEMMAX)DIV 2;P:=MEM[ROVER+1].HH.LH;Q:=LOMEMMAX;
MEM[P+1].HH.RH:=Q;MEM[ROVER+1].HH.LH:=Q;IF T>327145 THEN T:=327145;
MEM[Q+1].HH.RH:=ROVER;MEM[Q+1].HH.LH:=P;MEM[Q].HH.RH:=327145;
MEM[Q].HH.LH:=T-LOMEMMAX;LOMEMMAX:=T;MEM[LOMEMMAX].HH.RH:=0;
MEM[LOMEMMAX].HH.LH:=0;ROVER:=Q;GOTO 20;END{:126};
OVERFLOW(301,MEMMAX+1-MEMMIN);40:MEM[R].HH.RH:=0;VARUSED:=VARUSED+S;
GETNODE:=R;10:END;{:125}{130:}PROCEDURE FREENODE(P:HALFWORD;S:HALFWORD);
VAR Q:HALFWORD;BEGIN MEM[P].HH.LH:=S;MEM[P].HH.RH:=327145;
Q:=MEM[ROVER+1].HH.LH;MEM[P+1].HH.LH:=Q;MEM[P+1].HH.RH:=ROVER;
MEM[ROVER+1].HH.LH:=P;MEM[Q+1].HH.RH:=P;VARUSED:=VARUSED-S;END;{:130}
{131:}PROCEDURE SORTAVAIL;VAR P,Q,R:HALFWORD;OLDROVER:HALFWORD;
BEGIN P:=GETNODE(1073741824);P:=MEM[ROVER+1].HH.RH;
MEM[ROVER+1].HH.RH:=327145;OLDROVER:=ROVER;WHILE P<>OLDROVER DO{132:}
IF P<ROVER THEN BEGIN Q:=P;P:=MEM[Q+1].HH.RH;MEM[Q+1].HH.RH:=ROVER;
ROVER:=Q;END ELSE BEGIN Q:=ROVER;
WHILE MEM[Q+1].HH.RH<P DO Q:=MEM[Q+1].HH.RH;R:=MEM[P+1].HH.RH;
MEM[P+1].HH.RH:=MEM[Q+1].HH.RH;MEM[Q+1].HH.RH:=P;P:=R;END{:132};
P:=ROVER;
WHILE MEM[P+1].HH.RH<>327145 DO BEGIN MEM[MEM[P+1].HH.RH+1].HH.LH:=P;
P:=MEM[P+1].HH.RH;END;MEM[P+1].HH.RH:=ROVER;MEM[ROVER+1].HH.LH:=P;END;
{:131}{136:}FUNCTION NEWNULLBOX:HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(7);MEM[P].HH.B0:=0;MEM[P].HH.B1:=0;MEM[P+1].INT:=0;
MEM[P+2].INT:=0;MEM[P+3].INT:=0;MEM[P+4].INT:=0;MEM[P+5].HH.RH:=0;
MEM[P+5].HH.B0:=0;MEM[P+5].HH.B1:=0;MEM[P+6].GR:=0.0;NEWNULLBOX:=P;END;
{:136}{139:}FUNCTION NEWRULE:HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(4);MEM[P].HH.B0:=2;MEM[P].HH.B1:=0;
MEM[P+1].INT:=-1073741824;MEM[P+2].INT:=-1073741824;
MEM[P+3].INT:=-1073741824;NEWRULE:=P;END;{:139}{144:}
FUNCTION NEWLIGATURE(F,C:QUARTERWORD;Q:HALFWORD):HALFWORD;
VAR P:HALFWORD;BEGIN P:=GETNODE(2);MEM[P].HH.B0:=6;MEM[P+1].HH.B0:=F;
MEM[P+1].HH.B1:=C;MEM[P+1].HH.RH:=Q;MEM[P].HH.B1:=0;NEWLIGATURE:=P;END;
FUNCTION NEWLIGITEM(C:QUARTERWORD):HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(2);MEM[P].HH.B1:=C;MEM[P+1].HH.RH:=0;NEWLIGITEM:=P;END;
{:144}{145:}FUNCTION NEWDISC:HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(2);MEM[P].HH.B0:=7;MEM[P].HH.B1:=0;MEM[P+1].HH.LH:=0;
MEM[P+1].HH.RH:=0;NEWDISC:=P;END;{:145}{147:}FUNCTION NEWMATH(W:SCALED;
S:SMALLNUMBER):HALFWORD;VAR P:HALFWORD;BEGIN P:=GETNODE(2);
MEM[P].HH.B0:=9;MEM[P].HH.B1:=S;MEM[P+1].INT:=W;NEWMATH:=P;END;{:147}
{151:}FUNCTION NEWSPEC(P:HALFWORD):HALFWORD;VAR Q:HALFWORD;
BEGIN Q:=GETNODE(4);MEM[Q]:=MEM[P];MEM[Q].HH.RH:=0;
MEM[Q+1].INT:=MEM[P+1].INT;MEM[Q+2].INT:=MEM[P+2].INT;
MEM[Q+3].INT:=MEM[P+3].INT;NEWSPEC:=Q;END;{:151}{152:}
FUNCTION NEWPARAMGLUE(N:SMALLNUMBER):HALFWORD;VAR P:HALFWORD;Q:HALFWORD;
BEGIN P:=GETNODE(2);MEM[P].HH.B0:=10;MEM[P].HH.B1:=N+1;
MEM[P+1].HH.RH:=0;Q:={224:}EQTB[10782+N].HH.RH{:224};MEM[P+1].HH.LH:=Q;
MEM[Q].HH.RH:=MEM[Q].HH.RH+1;NEWPARAMGLUE:=P;END;{:152}{153:}
FUNCTION NEWGLUE(Q:HALFWORD):HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(2);MEM[P].HH.B0:=10;MEM[P].HH.B1:=0;MEM[P+1].HH.RH:=0;
MEM[P+1].HH.LH:=Q;MEM[Q].HH.RH:=MEM[Q].HH.RH+1;NEWGLUE:=P;END;{:153}
{154:}FUNCTION NEWSKIPPARAM(N:SMALLNUMBER):HALFWORD;VAR P:HALFWORD;
BEGIN TEMPPTR:=NEWSPEC({224:}EQTB[10782+N].HH.RH{:224});
P:=NEWGLUE(TEMPPTR);MEM[TEMPPTR].HH.RH:=0;MEM[P].HH.B1:=N+1;
NEWSKIPPARAM:=P;END;{:154}{156:}FUNCTION NEWKERN(W:SCALED):HALFWORD;
VAR P:HALFWORD;BEGIN P:=GETNODE(2);MEM[P].HH.B0:=11;MEM[P].HH.B1:=0;
MEM[P+1].INT:=W;NEWKERN:=P;END;{:156}{158:}
FUNCTION NEWPENALTY(M:INTEGER):HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(2);MEM[P].HH.B0:=12;MEM[P].HH.B1:=0;MEM[P+1].INT:=M;
NEWPENALTY:=P;END;{:158}{167:}{PROCEDURE CHECKMEM(PRINTLOCS:BOOLEAN);
LABEL 31,32;VAR P,Q:HALFWORD;CLOBBERED:BOOLEAN;
BEGIN FOR P:=MEMMIN TO LOMEMMAX DO FREE[P]:=FALSE;
FOR P:=HIMEMMIN TO MEMEND DO FREE[P]:=FALSE;[168:]P:=AVAIL;Q:=0;
CLOBBERED:=FALSE;
WHILE P<>0 DO BEGIN IF(P>MEMEND)OR(P<HIMEMMIN)THEN CLOBBERED:=TRUE ELSE
IF FREE[P]THEN CLOBBERED:=TRUE;IF CLOBBERED THEN BEGIN PRINTNL(302);
PRINTINT(Q);GOTO 31;END;FREE[P]:=TRUE;Q:=P;P:=MEM[Q].HH.RH;END;
31:[:168];[169:]P:=ROVER;Q:=0;CLOBBERED:=FALSE;
REPEAT IF(P>=LOMEMMAX)OR(P<MEMMIN)THEN CLOBBERED:=TRUE ELSE IF(MEM[P+1].
HH.RH>=LOMEMMAX)OR(MEM[P+1].HH.RH<MEMMIN)THEN CLOBBERED:=TRUE ELSE IF
NOT((MEM[P].HH.RH=327145))OR(MEM[P].HH.LH<2)OR(P+MEM[P].HH.LH>LOMEMMAX)
OR(MEM[MEM[P+1].HH.RH+1].HH.LH<>P)THEN CLOBBERED:=TRUE;
IF CLOBBERED THEN BEGIN PRINTNL(303);PRINTINT(Q);GOTO 32;END;
FOR Q:=P TO P+MEM[P].HH.LH-1 DO BEGIN IF FREE[Q]THEN BEGIN PRINTNL(304);
PRINTINT(Q);GOTO 32;END;FREE[Q]:=TRUE;END;Q:=P;P:=MEM[P+1].HH.RH;
UNTIL P=ROVER;32:[:169];[170:]P:=MEMMIN;
WHILE P<=LOMEMMAX DO BEGIN IF(MEM[P].HH.RH=327145)THEN BEGIN PRINTNL(305
);PRINTINT(P);END;WHILE(P<=LOMEMMAX)AND NOT FREE[P]DO P:=P+1;
WHILE(P<=LOMEMMAX)AND FREE[P]DO P:=P+1;END[:170];
IF PRINTLOCS THEN[171:]BEGIN PRINTNL(306);
FOR P:=MEMMIN TO LOMEMMAX DO IF NOT FREE[P]AND((P>WASLOMAX)OR WASFREE[P]
)THEN BEGIN PRINTCHAR(32);PRINTINT(P);END;
FOR P:=HIMEMMIN TO MEMEND DO IF NOT FREE[P]AND((P<WASHIMIN)OR(P>
WASMEMEND)OR WASFREE[P])THEN BEGIN PRINTCHAR(32);PRINTINT(P);END;
END[:171];FOR P:=MEMMIN TO LOMEMMAX DO WASFREE[P]:=FREE[P];
FOR P:=HIMEMMIN TO MEMEND DO WASFREE[P]:=FREE[P];WASMEMEND:=MEMEND;
WASLOMAX:=LOMEMMAX;WASHIMIN:=HIMEMMIN;END;}{:167}{172:}
{PROCEDURE SEARCHMEM(P:HALFWORD);VAR Q:INTEGER;
BEGIN FOR Q:=MEMMIN TO LOMEMMAX DO BEGIN IF MEM[Q].HH.RH=P THEN BEGIN
PRINTNL(307);PRINTINT(Q);PRINTCHAR(41);END;
IF MEM[Q].HH.LH=P THEN BEGIN PRINTNL(308);PRINTINT(Q);PRINTCHAR(41);END;
END;
FOR Q:=HIMEMMIN TO MEMEND DO BEGIN IF MEM[Q].HH.RH=P THEN BEGIN PRINTNL(
307);PRINTINT(Q);PRINTCHAR(41);END;
IF MEM[Q].HH.LH=P THEN BEGIN PRINTNL(308);PRINTINT(Q);PRINTCHAR(41);END;
END;
[255:]FOR Q:=1 TO 11838 DO BEGIN IF EQTB[Q].HH.RH=P THEN BEGIN PRINTNL(
504);PRINTINT(Q);PRINTCHAR(41);END;END[:255];
[285:]IF SAVEPTR>0 THEN FOR Q:=0 TO SAVEPTR-1 DO BEGIN IF SAVESTACK[Q].
HH.RH=P THEN BEGIN PRINTNL(554);PRINTINT(Q);PRINTCHAR(41);END;END[:285];
[933:]FOR Q:=0 TO 503 DO BEGIN IF HYPHLIST[Q]=P THEN BEGIN PRINTNL(949);
PRINTINT(Q);PRINTCHAR(41);END;END[:933];END;}{:172}{174:}
PROCEDURE SHORTDISPLAY(P:INTEGER);VAR N:INTEGER;
BEGIN WHILE P>MEMMIN DO BEGIN IF(P>=HIMEMMIN)THEN BEGIN IF P<=MEMEND
THEN BEGIN IF MEM[P].HH.B0<>FONTINSHORTDISPLAY THEN BEGIN IF(MEM[P].HH.
B0<0)OR(MEM[P].HH.B0>FONTMAX)THEN PRINTCHAR(42)ELSE{267:}
PRINTESC(HASH[10524+MEM[P].HH.B0].RH){:267};PRINTCHAR(32);
FONTINSHORTDISPLAY:=MEM[P].HH.B0;END;PRINT(MEM[P].HH.B1);END;
END ELSE{175:}CASE MEM[P].HH.B0 OF 0,1,3,8,4,5,13:PRINT(309);
2:PRINTCHAR(124);10:IF MEM[P+1].HH.LH<>0 THEN PRINTCHAR(32);
9:IF MEM[P].HH.B1>=4 THEN PRINT(309)ELSE PRINTCHAR(36);
6:SHORTDISPLAY(MEM[P+1].HH.RH);7:BEGIN SHORTDISPLAY(MEM[P+1].HH.LH);
SHORTDISPLAY(MEM[P+1].HH.RH);N:=MEM[P].HH.B1;
WHILE N>0 DO BEGIN IF MEM[P].HH.RH<>0 THEN P:=MEM[P].HH.RH;N:=N-1;END;
END;OTHERWISE END{:175};P:=MEM[P].HH.RH;END;END;{:174}{176:}
PROCEDURE PRINTFONTANDCHAR(P:INTEGER);
BEGIN IF P>MEMEND THEN PRINTESC(310)ELSE BEGIN IF(MEM[P].HH.B0<0)OR(MEM[
P].HH.B0>FONTMAX)THEN PRINTCHAR(42)ELSE{267:}
PRINTESC(HASH[10524+MEM[P].HH.B0].RH){:267};PRINTCHAR(32);
PRINT(MEM[P].HH.B1);END;END;PROCEDURE PRINTMARK(P:INTEGER);
BEGIN PRINTCHAR(123);
IF(P<HIMEMMIN)OR(P>MEMEND)THEN PRINTESC(310)ELSE SHOWTOKENLIST(MEM[P].HH
.RH,0,MAXPRINTLINE-10);PRINTCHAR(125);END;
PROCEDURE PRINTRULEDIMEN(D:SCALED);
BEGIN IF(D=-1073741824)THEN PRINTCHAR(42)ELSE PRINTSCALED(D);END;{:176}
{177:}PROCEDURE PRINTGLUE(D:SCALED;ORDER:INTEGER;S:STRNUMBER);
BEGIN PRINTSCALED(D);
IF(ORDER<0)OR(ORDER>3)THEN PRINT(311)ELSE IF ORDER>0 THEN BEGIN PRINT(
312);WHILE ORDER>1 DO BEGIN PRINTCHAR(108);ORDER:=ORDER-1;END;
END ELSE IF S<>0 THEN PRINT(S);END;{:177}{178:}
PROCEDURE PRINTSPEC(P:INTEGER;S:STRNUMBER);
BEGIN IF(P<MEMMIN)OR(P>=LOMEMMAX)THEN PRINTCHAR(42)ELSE BEGIN
PRINTSCALED(MEM[P+1].INT);IF S<>0 THEN PRINT(S);
IF MEM[P+2].INT<>0 THEN BEGIN PRINT(313);
PRINTGLUE(MEM[P+2].INT,MEM[P].HH.B0,S);END;
IF MEM[P+3].INT<>0 THEN BEGIN PRINT(314);
PRINTGLUE(MEM[P+3].INT,MEM[P].HH.B1,S);END;END;END;{:178}{179:}{691:}
PROCEDURE PRINTFAMANDCHAR(P:HALFWORD);BEGIN PRINTESC(467);
PRINTINT(MEM[P].HH.B0);PRINTCHAR(32);PRINT(MEM[P].HH.B1);END;
PROCEDURE PRINTDELIMITER(P:HALFWORD);VAR A:INTEGER;
BEGIN A:=MEM[P].QQQQ.B0*256+MEM[P].QQQQ.B1;
A:=A*4096+MEM[P].QQQQ.B2*256+MEM[P].QQQQ.B3;
IF A<0 THEN PRINTINT(A)ELSE PRINTHEX(A);END;{:691}{692:}
PROCEDURE SHOWINFO;FORWARD;PROCEDURE PRINTSUBSIDIARYDATA(P:HALFWORD;
C:ASCIICODE);
BEGIN IF(POOLPTR-STRSTART[STRPTR])>=DEPTHTHRESHOLD THEN BEGIN IF MEM[P].
HH.RH<>0 THEN PRINT(315);END ELSE BEGIN BEGIN STRPOOL[POOLPTR]:=C;
POOLPTR:=POOLPTR+1;END;TEMPPTR:=P;CASE MEM[P].HH.RH OF 1:BEGIN PRINTLN;
PRINTCURRENTSTRING;PRINTFAMANDCHAR(P);END;2:SHOWINFO;
3:IF MEM[P].HH.LH=0 THEN BEGIN PRINTLN;PRINTCURRENTSTRING;PRINT(868);
END ELSE SHOWINFO;OTHERWISE END;POOLPTR:=POOLPTR-1;END;END;{:692}{694:}
PROCEDURE PRINTSTYLE(C:INTEGER);BEGIN CASE C DIV 2 OF 0:PRINTESC(869);
1:PRINTESC(870);2:PRINTESC(871);3:PRINTESC(872);OTHERWISE PRINT(873)END;
END;{:694}{225:}PROCEDURE PRINTSKIPPARAM(N:INTEGER);
BEGIN CASE N OF 0:PRINTESC(379);1:PRINTESC(380);2:PRINTESC(381);
3:PRINTESC(382);4:PRINTESC(383);5:PRINTESC(384);6:PRINTESC(385);
7:PRINTESC(386);8:PRINTESC(387);9:PRINTESC(388);10:PRINTESC(389);
11:PRINTESC(390);12:PRINTESC(391);13:PRINTESC(392);14:PRINTESC(393);
15:PRINTESC(394);16:PRINTESC(395);17:PRINTESC(396);
OTHERWISE PRINT(397)END;END;{:225}{:179}{182:}
PROCEDURE SHOWNODELIST(P:INTEGER);LABEL 10;VAR N:INTEGER;G:DOUBLE;
BEGIN IF(POOLPTR-STRSTART[STRPTR])>DEPTHTHRESHOLD THEN BEGIN IF P>0 THEN
PRINT(315);GOTO 10;END;N:=0;WHILE P>MEMMIN DO BEGIN PRINTLN;
PRINTCURRENTSTRING;IF P>MEMEND THEN BEGIN PRINT(316);GOTO 10;END;N:=N+1;
IF N>BREADTHMAX THEN BEGIN PRINT(317);GOTO 10;END;{183:}
IF(P>=HIMEMMIN)THEN PRINTFONTANDCHAR(P)ELSE CASE MEM[P].HH.B0 OF 0,1,13:
{184:}
BEGIN IF MEM[P].HH.B0=0 THEN PRINTESC(104)ELSE IF MEM[P].HH.B0=1 THEN
PRINTESC(118)ELSE PRINTESC(319);PRINT(320);PRINTSCALED(MEM[P+3].INT);
PRINTCHAR(43);PRINTSCALED(MEM[P+2].INT);PRINT(321);
PRINTSCALED(MEM[P+1].INT);IF MEM[P].HH.B0=13 THEN{185:}
BEGIN IF MEM[P].HH.B1<>0 THEN BEGIN PRINT(287);PRINTINT(MEM[P].HH.B1+1);
PRINT(323);END;IF MEM[P+6].INT<>0 THEN BEGIN PRINT(324);
PRINTGLUE(MEM[P+6].INT,MEM[P+5].HH.B1,0);END;
IF MEM[P+4].INT<>0 THEN BEGIN PRINT(325);
PRINTGLUE(MEM[P+4].INT,MEM[P+5].HH.B0,0);END;END{:185}ELSE BEGIN{186:}
G:=DBLE(MEM[P+6].GR);
IF(G<>0.0D0)AND(MEM[P+5].HH.B0<>0)THEN BEGIN PRINT(326);
IF MEM[P+5].HH.B0=2 THEN PRINT(327);
IF(MEM[P+6].GR::VAXFFLOAT.SIGN AND(MEM[P+6].GR::VAXFFLOAT.EXPO=0))THEN
PRINT(328)ELSE IF ABS(G)>20000.0D0 THEN BEGIN IF G>0.0D0 THEN PRINTCHAR(
62)ELSE PRINT(329);PRINTGLUE(20000*65536,MEM[P+5].HH.B1,0);
END ELSE PRINTGLUE(ROUND(65536*G),MEM[P+5].HH.B1,0);END{:186};
IF MEM[P+4].INT<>0 THEN BEGIN PRINT(322);PRINTSCALED(MEM[P+4].INT);END;
IF(ETEXMODE=1)THEN{1438:}
IF(MEM[P].HH.B0=0)AND(MEM[P].HH.B1=2)THEN PRINT(1368){:1438};END;
BEGIN BEGIN STRPOOL[POOLPTR]:=46;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+5].HH.RH);POOLPTR:=POOLPTR-1;END;END{:184};2:{187:}
BEGIN PRINTESC(330);PRINTRULEDIMEN(MEM[P+3].INT);PRINTCHAR(43);
PRINTRULEDIMEN(MEM[P+2].INT);PRINT(321);PRINTRULEDIMEN(MEM[P+1].INT);
END{:187};3:{188:}BEGIN PRINTESC(331);PRINTINT(MEM[P].HH.B1);PRINT(332);
PRINTSCALED(MEM[P+3].INT);PRINT(333);PRINTSPEC(MEM[P+4].HH.RH,0);
PRINTCHAR(44);PRINTSCALED(MEM[P+2].INT);PRINT(334);
PRINTINT(MEM[P+1].INT);BEGIN BEGIN STRPOOL[POOLPTR]:=46;
POOLPTR:=POOLPTR+1;END;SHOWNODELIST(MEM[P+4].HH.LH);POOLPTR:=POOLPTR-1;
END;END{:188};8:{1356:}
CASE MEM[P].HH.B1 OF 0:BEGIN PRINTWRITEWHATSIT(1295,P);PRINTCHAR(61);
PRINTFILENAME(MEM[P+1].HH.RH,MEM[P+2].HH.LH,MEM[P+2].HH.RH);END;
1:BEGIN PRINTWRITEWHATSIT(603,P);PRINTMARK(MEM[P+1].HH.RH);END;
2:PRINTWRITEWHATSIT(1296,P);3:BEGIN PRINTESC(1297);
PRINTMARK(MEM[P+1].HH.RH);END;4:BEGIN PRINTESC(1299);
PRINTINT(MEM[P+1].HH.RH);PRINT(1302);PRINTINT(MEM[P+1].HH.B0);
PRINTCHAR(44);PRINTINT(MEM[P+1].HH.B1);PRINTCHAR(41);END;
OTHERWISE PRINT(1303)END{:1356};10:{189:}IF MEM[P].HH.B1>=100 THEN{190:}
BEGIN PRINTESC(339);
IF MEM[P].HH.B1=101 THEN PRINTCHAR(99)ELSE IF MEM[P].HH.B1=102 THEN
PRINTCHAR(120);PRINT(340);PRINTSPEC(MEM[P+1].HH.LH,0);
BEGIN BEGIN STRPOOL[POOLPTR]:=46;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+1].HH.RH);POOLPTR:=POOLPTR-1;END;END{:190}
ELSE BEGIN PRINTESC(335);IF MEM[P].HH.B1<>0 THEN BEGIN PRINTCHAR(40);
IF MEM[P].HH.B1<98 THEN PRINTSKIPPARAM(MEM[P].HH.B1-1)ELSE IF MEM[P].HH.
B1=98 THEN PRINTESC(336)ELSE PRINTESC(337);PRINTCHAR(41);END;
IF MEM[P].HH.B1<>98 THEN BEGIN PRINTCHAR(32);
IF MEM[P].HH.B1<98 THEN PRINTSPEC(MEM[P+1].HH.LH,0)ELSE PRINTSPEC(MEM[P
+1].HH.LH,338);END;END{:189};11:{191:}
IF MEM[P].HH.B1<>99 THEN BEGIN PRINTESC(341);
IF MEM[P].HH.B1<>0 THEN PRINTCHAR(32);PRINTSCALED(MEM[P+1].INT);
IF MEM[P].HH.B1=2 THEN PRINT(342);END ELSE BEGIN PRINTESC(343);
PRINTSCALED(MEM[P+1].INT);PRINT(338);END{:191};9:{192:}
IF MEM[P].HH.B1>1 THEN BEGIN IF ODD(MEM[P].HH.B1)THEN PRINTESC(344)ELSE
PRINTESC(345);
IF MEM[P].HH.B1>8 THEN PRINTCHAR(82)ELSE IF MEM[P].HH.B1>4 THEN
PRINTCHAR(76)ELSE PRINTCHAR(77);END ELSE BEGIN PRINTESC(346);
IF MEM[P].HH.B1=0 THEN PRINT(347)ELSE PRINT(348);
IF MEM[P+1].INT<>0 THEN BEGIN PRINT(349);PRINTSCALED(MEM[P+1].INT);END;
END{:192};6:{193:}BEGIN PRINTFONTANDCHAR(P+1);PRINT(350);
IF MEM[P].HH.B1>1 THEN PRINTCHAR(124);
FONTINSHORTDISPLAY:=MEM[P+1].HH.B0;SHORTDISPLAY(MEM[P+1].HH.RH);
IF ODD(MEM[P].HH.B1)THEN PRINTCHAR(124);PRINTCHAR(41);END{:193};
12:{194:}BEGIN PRINTESC(351);PRINTINT(MEM[P+1].INT);END{:194};7:{195:}
BEGIN PRINTESC(352);IF MEM[P].HH.B1>0 THEN BEGIN PRINT(353);
PRINTINT(MEM[P].HH.B1);END;BEGIN BEGIN STRPOOL[POOLPTR]:=46;
POOLPTR:=POOLPTR+1;END;SHOWNODELIST(MEM[P+1].HH.LH);POOLPTR:=POOLPTR-1;
END;BEGIN STRPOOL[POOLPTR]:=124;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+1].HH.RH);POOLPTR:=POOLPTR-1;END{:195};4:{196:}
BEGIN PRINTESC(354);IF MEM[P+1].HH.LH<>0 THEN BEGIN PRINTCHAR(115);
PRINTINT(MEM[P+1].HH.LH);END;PRINTMARK(MEM[P+1].HH.RH);END{:196};
5:{197:}BEGIN PRINTESC(355);BEGIN BEGIN STRPOOL[POOLPTR]:=46;
POOLPTR:=POOLPTR+1;END;SHOWNODELIST(MEM[P+1].INT);POOLPTR:=POOLPTR-1;
END;END{:197};{690:}14:PRINTSTYLE(MEM[P].HH.B1);15:{695:}
BEGIN PRINTESC(528);BEGIN STRPOOL[POOLPTR]:=68;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+1].HH.LH);POOLPTR:=POOLPTR-1;
BEGIN STRPOOL[POOLPTR]:=84;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+1].HH.RH);POOLPTR:=POOLPTR-1;
BEGIN STRPOOL[POOLPTR]:=83;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+2].HH.LH);POOLPTR:=POOLPTR-1;
BEGIN STRPOOL[POOLPTR]:=115;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+2].HH.RH);POOLPTR:=POOLPTR-1;END{:695};
16,17,18,19,20,21,22,23,24,27,26,29,28,30,31:{696:}
BEGIN CASE MEM[P].HH.B0 OF 16:PRINTESC(874);17:PRINTESC(875);
18:PRINTESC(876);19:PRINTESC(877);20:PRINTESC(878);21:PRINTESC(879);
22:PRINTESC(880);23:PRINTESC(881);27:PRINTESC(882);26:PRINTESC(883);
29:PRINTESC(543);24:BEGIN PRINTESC(537);PRINTDELIMITER(P+4);END;
28:BEGIN PRINTESC(511);PRINTFAMANDCHAR(P+4);END;30:BEGIN PRINTESC(884);
PRINTDELIMITER(P+1);END;
31:BEGIN IF MEM[P].HH.B1=0 THEN PRINTESC(885)ELSE PRINTESC(886);
PRINTDELIMITER(P+1);END;END;
IF MEM[P].HH.B0<30 THEN BEGIN IF MEM[P].HH.B1<>0 THEN IF MEM[P].HH.B1=1
THEN PRINTESC(887)ELSE PRINTESC(888);PRINTSUBSIDIARYDATA(P+1,46);END;
PRINTSUBSIDIARYDATA(P+2,94);PRINTSUBSIDIARYDATA(P+3,95);END{:696};
25:{697:}BEGIN PRINTESC(889);
IF MEM[P+1].INT=1073741824 THEN PRINT(890)ELSE PRINTSCALED(MEM[P+1].INT)
;
IF(MEM[P+4].QQQQ.B0<>0)OR(MEM[P+4].QQQQ.B1<>0)OR(MEM[P+4].QQQQ.B2<>0)OR(
MEM[P+4].QQQQ.B3<>0)THEN BEGIN PRINT(891);PRINTDELIMITER(P+4);END;
IF(MEM[P+5].QQQQ.B0<>0)OR(MEM[P+5].QQQQ.B1<>0)OR(MEM[P+5].QQQQ.B2<>0)OR(
MEM[P+5].QQQQ.B3<>0)THEN BEGIN PRINT(892);PRINTDELIMITER(P+5);END;
PRINTSUBSIDIARYDATA(P+2,92);PRINTSUBSIDIARYDATA(P+3,47);END{:697};{:690}
OTHERWISE PRINT(318)END{:183};P:=MEM[P].HH.RH;END;10:END;{:182}{198:}
PROCEDURE SHOWBOX(P:HALFWORD);BEGIN{236:}
DEPTHTHRESHOLD:=EQTB[13193].INT;BREADTHMAX:=EQTB[13192].INT{:236};
IF BREADTHMAX<=0 THEN BREADTHMAX:=5;
IF POOLPTR+DEPTHTHRESHOLD>=POOLSIZE THEN DEPTHTHRESHOLD:=POOLSIZE-
POOLPTR-1;SHOWNODELIST(P);PRINTLN;END;{:198}{200:}
PROCEDURE DELETETOKENREF(P:HALFWORD);
BEGIN IF MEM[P].HH.LH=0 THEN FLUSHLIST(P)ELSE MEM[P].HH.LH:=MEM[P].HH.LH
-1;END;{:200}{201:}PROCEDURE DELETEGLUEREF(P:HALFWORD);
BEGIN IF MEM[P].HH.RH=0 THEN FREENODE(P,4)ELSE MEM[P].HH.RH:=MEM[P].HH.
RH-1;END;{:201}{202:}PROCEDURE FLUSHNODELIST(P:HALFWORD);LABEL 30;
VAR Q:HALFWORD;BEGIN WHILE P<>0 DO BEGIN Q:=MEM[P].HH.RH;
IF(P>=HIMEMMIN)THEN BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;
DYNUSED:=DYNUSED-1;
END ELSE BEGIN CASE MEM[P].HH.B0 OF 0,1,13:BEGIN FLUSHNODELIST(MEM[P+5].
HH.RH);FREENODE(P,7);GOTO 30;END;2:BEGIN FREENODE(P,4);GOTO 30;END;
3:BEGIN FLUSHNODELIST(MEM[P+4].HH.LH);DELETEGLUEREF(MEM[P+4].HH.RH);
FREENODE(P,5);GOTO 30;END;8:{1358:}
BEGIN CASE MEM[P].HH.B1 OF 0:FREENODE(P,3);
1,3:BEGIN DELETETOKENREF(MEM[P+1].HH.RH);FREENODE(P,2);GOTO 30;END;
2,4:FREENODE(P,2);OTHERWISE CONFUSION(1305)END;GOTO 30;END{:1358};
10:BEGIN BEGIN IF MEM[MEM[P+1].HH.LH].HH.RH=0 THEN FREENODE(MEM[P+1].HH.
LH,4)ELSE MEM[MEM[P+1].HH.LH].HH.RH:=MEM[MEM[P+1].HH.LH].HH.RH-1;END;
IF MEM[P+1].HH.RH<>0 THEN FLUSHNODELIST(MEM[P+1].HH.RH);END;11,9,12:;
6:FLUSHNODELIST(MEM[P+1].HH.RH);4:DELETETOKENREF(MEM[P+1].HH.RH);
7:BEGIN FLUSHNODELIST(MEM[P+1].HH.LH);FLUSHNODELIST(MEM[P+1].HH.RH);END;
5:FLUSHNODELIST(MEM[P+1].INT);{698:}14:BEGIN FREENODE(P,3);GOTO 30;END;
15:BEGIN FLUSHNODELIST(MEM[P+1].HH.LH);FLUSHNODELIST(MEM[P+1].HH.RH);
FLUSHNODELIST(MEM[P+2].HH.LH);FLUSHNODELIST(MEM[P+2].HH.RH);
FREENODE(P,3);GOTO 30;END;
16,17,18,19,20,21,22,23,24,27,26,29,28:BEGIN IF MEM[P+1].HH.RH>=2 THEN
FLUSHNODELIST(MEM[P+1].HH.LH);
IF MEM[P+2].HH.RH>=2 THEN FLUSHNODELIST(MEM[P+2].HH.LH);
IF MEM[P+3].HH.RH>=2 THEN FLUSHNODELIST(MEM[P+3].HH.LH);
IF MEM[P].HH.B0=24 THEN FREENODE(P,5)ELSE IF MEM[P].HH.B0=28 THEN
FREENODE(P,5)ELSE FREENODE(P,4);GOTO 30;END;30,31:BEGIN FREENODE(P,4);
GOTO 30;END;25:BEGIN FLUSHNODELIST(MEM[P+2].HH.LH);
FLUSHNODELIST(MEM[P+3].HH.LH);FREENODE(P,6);GOTO 30;END;{:698}
OTHERWISE CONFUSION(356)END;FREENODE(P,2);30:END;P:=Q;END;END;{:202}
{204:}FUNCTION COPYNODELIST(P:HALFWORD):HALFWORD;VAR H:HALFWORD;
Q:HALFWORD;R:HALFWORD;WORDS:0..5;BEGIN H:=GETAVAIL;Q:=H;
WHILE P<>0 DO BEGIN{205:}WORDS:=1;
IF(P>=HIMEMMIN)THEN R:=GETAVAIL ELSE{206:}
CASE MEM[P].HH.B0 OF 0,1,13:BEGIN R:=GETNODE(7);MEM[R+6]:=MEM[P+6];
MEM[R+5]:=MEM[P+5];MEM[R+5].HH.RH:=COPYNODELIST(MEM[P+5].HH.RH);
WORDS:=5;END;2:BEGIN R:=GETNODE(4);WORDS:=4;END;3:BEGIN R:=GETNODE(5);
MEM[R+4]:=MEM[P+4];
MEM[MEM[P+4].HH.RH].HH.RH:=MEM[MEM[P+4].HH.RH].HH.RH+1;
MEM[R+4].HH.LH:=COPYNODELIST(MEM[P+4].HH.LH);WORDS:=4;END;8:{1357:}
CASE MEM[P].HH.B1 OF 0:BEGIN R:=GETNODE(3);WORDS:=3;END;
1,3:BEGIN R:=GETNODE(2);
MEM[MEM[P+1].HH.RH].HH.LH:=MEM[MEM[P+1].HH.RH].HH.LH+1;WORDS:=2;END;
2,4:BEGIN R:=GETNODE(2);WORDS:=2;END;OTHERWISE CONFUSION(1304)END{:1357}
;10:BEGIN R:=GETNODE(2);
MEM[MEM[P+1].HH.LH].HH.RH:=MEM[MEM[P+1].HH.LH].HH.RH+1;
MEM[R+1].HH.LH:=MEM[P+1].HH.LH;
MEM[R+1].HH.RH:=COPYNODELIST(MEM[P+1].HH.RH);END;
11,9,12:BEGIN R:=GETNODE(2);WORDS:=2;END;6:BEGIN R:=GETNODE(2);
MEM[R+1]:=MEM[P+1];MEM[R+1].HH.RH:=COPYNODELIST(MEM[P+1].HH.RH);END;
7:BEGIN R:=GETNODE(2);MEM[R+1].HH.LH:=COPYNODELIST(MEM[P+1].HH.LH);
MEM[R+1].HH.RH:=COPYNODELIST(MEM[P+1].HH.RH);END;4:BEGIN R:=GETNODE(2);
MEM[MEM[P+1].HH.RH].HH.LH:=MEM[MEM[P+1].HH.RH].HH.LH+1;WORDS:=2;END;
5:BEGIN R:=GETNODE(2);MEM[R+1].INT:=COPYNODELIST(MEM[P+1].INT);END;
OTHERWISE CONFUSION(357)END{:206};WHILE WORDS>0 DO BEGIN WORDS:=WORDS-1;
MEM[R+WORDS]:=MEM[P+WORDS];END{:205};MEM[Q].HH.RH:=R;Q:=R;
P:=MEM[P].HH.RH;END;MEM[Q].HH.RH:=0;Q:=MEM[H].HH.RH;
BEGIN MEM[H].HH.RH:=AVAIL;AVAIL:=H;DYNUSED:=DYNUSED-1;END;
COPYNODELIST:=Q;END;{:204}{211:}PROCEDURE PRINTMODE(M:INTEGER);
BEGIN IF M>0 THEN CASE M DIV(101)OF 0:PRINT(358);1:PRINT(359);
2:PRINT(360);
END ELSE IF M=0 THEN PRINT(361)ELSE CASE(-M)DIV(101)OF 0:PRINT(362);
1:PRINT(363);2:PRINT(346);END;PRINT(364);END;{:211}{216:}
PROCEDURE PUSHNEST;
BEGIN IF NESTPTR>MAXNESTSTACK THEN BEGIN MAXNESTSTACK:=NESTPTR;
IF NESTPTR=NESTSIZE THEN OVERFLOW(365,NESTSIZE);END;
NEST[NESTPTR]:=CURLIST;NESTPTR:=NESTPTR+1;CURLIST.HEADFIELD:=GETAVAIL;
CURLIST.TAILFIELD:=CURLIST.HEADFIELD;CURLIST.PGFIELD:=0;
CURLIST.MLFIELD:=LINE;CURLIST.ETEXAUXFIELD:=0;END;{:216}{217:}
PROCEDURE POPNEST;BEGIN BEGIN MEM[CURLIST.HEADFIELD].HH.RH:=AVAIL;
AVAIL:=CURLIST.HEADFIELD;DYNUSED:=DYNUSED-1;END;NESTPTR:=NESTPTR-1;
CURLIST:=NEST[NESTPTR];END;{:217}{218:}PROCEDURE PRINTTOTALS;FORWARD;
PROCEDURE SHOWACTIVITIES;VAR P:0..NESTSIZE;M:-203..203;A:MEMORYWORD;
Q,R:HALFWORD;T:INTEGER;BEGIN NEST[NESTPTR]:=CURLIST;PRINTNL(339);
PRINTLN;FOR P:=NESTPTR DOWNTO 0 DO BEGIN M:=NEST[P].MODEFIELD;
A:=NEST[P].AUXFIELD;PRINTNL(366);PRINTMODE(M);PRINT(367);
PRINTINT(ABS(NEST[P].MLFIELD));
IF M=102 THEN IF NEST[P].PGFIELD<>8585216 THEN BEGIN PRINT(368);
PRINTINT(NEST[P].PGFIELD MOD 65536);PRINT(369);
PRINTINT(NEST[P].PGFIELD DIV 4194304);PRINTCHAR(44);
PRINTINT((NEST[P].PGFIELD DIV 65536)MOD 64);PRINTCHAR(41);END;
IF NEST[P].MLFIELD<0 THEN PRINT(370);IF P=0 THEN BEGIN{986:}
IF 327142<>PAGETAIL THEN BEGIN PRINTNL(989);
IF OUTPUTACTIVE THEN PRINT(990);SHOWBOX(MEM[327142].HH.RH);
IF PAGECONTENTS>0 THEN BEGIN PRINTNL(991);PRINTTOTALS;PRINTNL(992);
PRINTSCALED(PAGESOFAR[0]);R:=MEM[327144].HH.RH;
WHILE R<>327144 DO BEGIN PRINTLN;PRINTESC(331);T:=MEM[R].HH.B1;
PRINTINT(T);PRINT(993);T:=XOVERN(MEM[R+3].INT,1000)*EQTB[13233+T].INT;
PRINTSCALED(T);IF MEM[R].HH.B0=1 THEN BEGIN Q:=327142;T:=0;
REPEAT Q:=MEM[Q].HH.RH;
IF(MEM[Q].HH.B0=3)AND(MEM[Q].HH.B1=MEM[R].HH.B1)THEN T:=T+1;
UNTIL Q=MEM[R+1].HH.LH;PRINT(994);PRINTINT(T);PRINT(995);END;
R:=MEM[R].HH.RH;END;END;END{:986};
IF MEM[327143].HH.RH<>0 THEN PRINTNL(371);END;
SHOWBOX(MEM[NEST[P].HEADFIELD].HH.RH);{219:}
CASE ABS(M)DIV(101)OF 0:BEGIN PRINTNL(372);
IF A.INT<=-65536000 THEN PRINT(373)ELSE PRINTSCALED(A.INT);
IF NEST[P].PGFIELD<>0 THEN BEGIN PRINT(374);PRINTINT(NEST[P].PGFIELD);
PRINT(375);IF NEST[P].PGFIELD<>1 THEN PRINTCHAR(115);END;END;
1:BEGIN PRINTNL(376);PRINTINT(A.HH.LH);
IF M>0 THEN IF A.HH.RH>0 THEN BEGIN PRINT(377);PRINTINT(A.HH.RH);END;
END;2:IF A.INT<>0 THEN BEGIN PRINT(378);SHOWBOX(A.INT);END;END{:219};
END;END;{:218}{237:}PROCEDURE PRINTPARAM(N:INTEGER);
BEGIN CASE N OF 0:PRINTESC(423);1:PRINTESC(424);2:PRINTESC(425);
3:PRINTESC(426);4:PRINTESC(427);5:PRINTESC(428);6:PRINTESC(429);
7:PRINTESC(430);8:PRINTESC(431);9:PRINTESC(432);10:PRINTESC(433);
11:PRINTESC(434);12:PRINTESC(435);13:PRINTESC(436);14:PRINTESC(437);
15:PRINTESC(438);16:PRINTESC(439);17:PRINTESC(440);18:PRINTESC(441);
19:PRINTESC(442);20:PRINTESC(443);21:PRINTESC(444);22:PRINTESC(445);
23:PRINTESC(446);24:PRINTESC(447);25:PRINTESC(448);26:PRINTESC(449);
27:PRINTESC(450);28:PRINTESC(451);29:PRINTESC(452);30:PRINTESC(453);
31:PRINTESC(454);32:PRINTESC(455);33:PRINTESC(456);34:PRINTESC(457);
35:PRINTESC(458);36:PRINTESC(459);37:PRINTESC(460);38:PRINTESC(461);
39:PRINTESC(462);40:PRINTESC(463);41:PRINTESC(464);42:PRINTESC(465);
43:PRINTESC(466);44:PRINTESC(467);45:PRINTESC(468);46:PRINTESC(469);
47:PRINTESC(470);48:PRINTESC(471);49:PRINTESC(472);50:PRINTESC(473);
51:PRINTESC(474);52:PRINTESC(475);53:PRINTESC(476);54:PRINTESC(477);
{1393:}55:PRINTESC(1316);56:PRINTESC(1317);57:PRINTESC(1318);
58:PRINTESC(1319);59:PRINTESC(1320);60:PRINTESC(1321);61:PRINTESC(1322);
62:PRINTESC(1323);63:PRINTESC(1324);{:1393}{1434:}64:PRINTESC(1363);
{:1434}OTHERWISE PRINT(478)END;END;{:237}{241:}PROCEDURE FIXDATEANDTIME;
VAR T:ARRAY[1..7]OF SIGNEDHALFWORD;BEGIN $numtim(T);
EQTB[13191].INT:=T[1];EQTB[13190].INT:=T[2];EQTB[13189].INT:=T[3];
EQTB[13188].INT:=T[4]*60+T[5];END;{:241}{245:}PROCEDURE BEGINDIAGNOSTIC;
BEGIN OLDSETTING:=SELECTOR;
IF(EQTB[13197].INT<=0)AND(SELECTOR=19)THEN BEGIN SELECTOR:=SELECTOR-1;
IF HISTORY=0 THEN HISTORY:=1;END;END;
PROCEDURE ENDDIAGNOSTIC(BLANKLINE:BOOLEAN);BEGIN PRINTNL(339);
IF BLANKLINE THEN PRINTLN;SELECTOR:=OLDSETTING;END;{:245}{247:}
PROCEDURE PRINTLENGTHPARAM(N:INTEGER);BEGIN CASE N OF 0:PRINTESC(481);
1:PRINTESC(482);2:PRINTESC(483);3:PRINTESC(484);4:PRINTESC(485);
5:PRINTESC(486);6:PRINTESC(487);7:PRINTESC(488);8:PRINTESC(489);
9:PRINTESC(490);10:PRINTESC(491);11:PRINTESC(492);12:PRINTESC(493);
13:PRINTESC(494);14:PRINTESC(495);15:PRINTESC(496);16:PRINTESC(497);
17:PRINTESC(498);18:PRINTESC(499);19:PRINTESC(500);20:PRINTESC(501);
OTHERWISE PRINT(502)END;END;{:247}{252:}{298:}
PROCEDURE PRINTCMDCHR(CMD:QUARTERWORD;CHRCODE:HALFWORD);VAR N:INTEGER;
BEGIN CASE CMD OF 1:BEGIN PRINT(564);PRINT(CHRCODE);END;
2:BEGIN PRINT(565);PRINT(CHRCODE);END;3:BEGIN PRINT(566);PRINT(CHRCODE);
END;6:BEGIN PRINT(567);PRINT(CHRCODE);END;7:BEGIN PRINT(568);
PRINT(CHRCODE);END;8:BEGIN PRINT(569);PRINT(CHRCODE);END;9:PRINT(570);
10:BEGIN PRINT(571);PRINT(CHRCODE);END;11:BEGIN PRINT(572);
PRINT(CHRCODE);END;12:BEGIN PRINT(573);PRINT(CHRCODE);END;{227:}
75,76:IF CHRCODE<10800 THEN PRINTSKIPPARAM(CHRCODE-10782)ELSE IF CHRCODE
<11056 THEN BEGIN PRINTESC(398);PRINTINT(CHRCODE-10800);
END ELSE BEGIN PRINTESC(399);PRINTINT(CHRCODE-11056);END;{:227}{231:}
72:IF CHRCODE>=11327 THEN BEGIN PRINTESC(410);PRINTINT(CHRCODE-11327);
END ELSE CASE CHRCODE OF 11317:PRINTESC(401);11318:PRINTESC(402);
11319:PRINTESC(403);11320:PRINTESC(404);11321:PRINTESC(405);
11322:PRINTESC(406);11323:PRINTESC(407);11324:PRINTESC(408);{1392:}
11325:PRINTESC(1315);{:1392}OTHERWISE PRINTESC(409)END;{:231}{239:}
73:IF CHRCODE<13233 THEN PRINTPARAM(CHRCODE-13168)ELSE BEGIN PRINTESC(
479);PRINTINT(CHRCODE-13233);END;{:239}{249:}
74:IF CHRCODE<13766 THEN PRINTLENGTHPARAM(CHRCODE-13745)ELSE BEGIN
PRINTESC(503);PRINTINT(CHRCODE-13766);END;{:249}{266:}45:PRINTESC(511);
90:PRINTESC(512);40:PRINTESC(513);41:PRINTESC(514);77:PRINTESC(522);
61:PRINTESC(515);42:PRINTESC(535);16:PRINTESC(516);107:PRINTESC(507);
88:PRINTESC(521);15:PRINTESC(517);92:PRINTESC(518);67:PRINTESC(508);
62:PRINTESC(519);64:PRINTESC(32);
102:IF CHRCODE=0 THEN PRINTESC(520){1496:}ELSE PRINTESC(782){:1496};
32:PRINTESC(523);36:PRINTESC(524);39:PRINTESC(525);37:PRINTESC(331);
44:PRINTESC(47);18:BEGIN PRINTESC(354);IF CHRCODE>0 THEN PRINTCHAR(115);
END;46:PRINTESC(526);17:PRINTESC(527);54:PRINTESC(528);91:PRINTESC(529);
34:PRINTESC(530);65:PRINTESC(531);103:PRINTESC(532);55:PRINTESC(336);
63:PRINTESC(533);66:PRINTESC(537);
96:IF CHRCODE=0 THEN PRINTESC(538){1493:}ELSE PRINTESC(1378){:1493};
0:PRINTESC(539);98:PRINTESC(540);80:PRINTESC(536);
84:CASE CHRCODE OF 11312:PRINTESC(534);{1598:}11313:PRINTESC(1411);
11314:PRINTESC(1412);11315:PRINTESC(1413);11316:PRINTESC(1414);{:1598}
END;109:IF CHRCODE=0 THEN PRINTESC(541){1421:}
ELSE IF CHRCODE=1 THEN PRINTESC(1353)ELSE PRINTESC(1354){:1421};
71:{1566:}BEGIN PRINTESC(410);IF CHRCODE<>0 THEN PRINTSANUM(CHRCODE);
END{:1566};38:PRINTESC(355);33:IF CHRCODE=0 THEN PRINTESC(542){1436:}
ELSE CASE CHRCODE OF 6:PRINTESC(1364);7:PRINTESC(1365);
10:PRINTESC(1366);OTHERWISE PRINTESC(1367)END{:1436};56:PRINTESC(543);
35:PRINTESC(544);{:266}{335:}13:PRINTESC(606);{:335}{377:}
104:IF CHRCODE=0 THEN PRINTESC(638){1481:}
ELSE IF CHRCODE=2 THEN PRINTESC(1376){:1481}ELSE PRINTESC(639);{:377}
{385:}110:BEGIN CASE(CHRCODE MOD 5)OF 1:PRINTESC(641);2:PRINTESC(642);
3:PRINTESC(643);4:PRINTESC(644);OTHERWISE PRINTESC(640)END;
IF CHRCODE>=5 THEN PRINTCHAR(115);END;{:385}{412:}89:{1565:}
BEGIN IF(CHRCODE<0)OR(CHRCODE>19)THEN CMD:=(MEM[CHRCODE].HH.B0 DIV 16)
ELSE BEGIN CMD:=CHRCODE-0;CHRCODE:=0;END;
IF CMD=0 THEN PRINTESC(479)ELSE IF CMD=1 THEN PRINTESC(503)ELSE IF CMD=2
THEN PRINTESC(398)ELSE PRINTESC(399);
IF CHRCODE<>0 THEN PRINTSANUM(CHRCODE);END{:1565};{:412}{417:}
79:IF CHRCODE=1 THEN PRINTESC(678)ELSE PRINTESC(677);
82:IF CHRCODE=0 THEN PRINTESC(679){1427:}
ELSE IF CHRCODE=2 THEN PRINTESC(1359){:1427}ELSE PRINTESC(680);
83:IF CHRCODE=1 THEN PRINTESC(681)ELSE IF CHRCODE=3 THEN PRINTESC(682)
ELSE PRINTESC(683);70:CASE CHRCODE OF 0:PRINTESC(684);1:PRINTESC(685);
2:PRINTESC(686);4:PRINTESC(687);{1381:}3:PRINTESC(1311);
6:PRINTESC(1312);{:1381}{1398:}7:PRINTESC(1338);8:PRINTESC(1339);{:1398}
{1401:}9:PRINTESC(1340);10:PRINTESC(1341);11:PRINTESC(1342);{:1401}
{1404:}14:PRINTESC(1343);15:PRINTESC(1344);16:PRINTESC(1345);
17:PRINTESC(1346);{:1404}{1407:}18:PRINTESC(1347);19:PRINTESC(1348);
20:PRINTESC(1349);{:1407}{1512:}25:PRINTESC(1387);26:PRINTESC(1388);
27:PRINTESC(1389);28:PRINTESC(1390);{:1512}{1535:}12:PRINTESC(1394);
13:PRINTESC(1395);21:PRINTESC(1396);22:PRINTESC(1397);{:1535}{1539:}
23:PRINTESC(1398);24:PRINTESC(1399);{:1539}OTHERWISE PRINTESC(688)END;
{:417}{469:}108:CASE CHRCODE OF 0:PRINTESC(744);1:PRINTESC(745);
2:PRINTESC(746);3:PRINTESC(747);4:PRINTESC(748);{1383:}6:PRINTESC(1313);
{:1383}OTHERWISE PRINTESC(749)END;{:469}{488:}
105:BEGIN IF CHRCODE>=32 THEN PRINTESC(782);
CASE CHRCODE MOD 32 OF 1:PRINTESC(766);2:PRINTESC(767);3:PRINTESC(768);
4:PRINTESC(769);5:PRINTESC(770);6:PRINTESC(771);7:PRINTESC(772);
8:PRINTESC(773);9:PRINTESC(774);10:PRINTESC(775);11:PRINTESC(776);
12:PRINTESC(777);13:PRINTESC(778);14:PRINTESC(779);15:PRINTESC(780);
16:PRINTESC(781);{1497:}17:PRINTESC(1379);18:PRINTESC(1380);
19:PRINTESC(1381);{:1497}OTHERWISE PRINTESC(765)END;END;{:488}{492:}
106:IF CHRCODE=2 THEN PRINTESC(783)ELSE IF CHRCODE=4 THEN PRINTESC(784)
ELSE PRINTESC(785);{:492}{781:}
4:IF CHRCODE=256 THEN PRINTESC(907)ELSE BEGIN PRINT(911);PRINT(CHRCODE);
END;5:IF CHRCODE=257 THEN PRINTESC(908)ELSE PRINTESC(909);{:781}{984:}
81:CASE CHRCODE OF 0:PRINTESC(979);1:PRINTESC(980);2:PRINTESC(981);
3:PRINTESC(982);4:PRINTESC(983);5:PRINTESC(984);6:PRINTESC(985);
OTHERWISE PRINTESC(986)END;{:984}{1053:}
14:IF CHRCODE=1 THEN PRINTESC(1034)ELSE PRINTESC(344);{:1053}{1059:}
26:CASE CHRCODE OF 4:PRINTESC(1035);0:PRINTESC(1036);1:PRINTESC(1037);
2:PRINTESC(1038);OTHERWISE PRINTESC(1039)END;
27:CASE CHRCODE OF 4:PRINTESC(1040);0:PRINTESC(1041);1:PRINTESC(1042);
2:PRINTESC(1043);OTHERWISE PRINTESC(1044)END;28:PRINTESC(337);
29:PRINTESC(341);30:PRINTESC(343);{:1059}{1072:}
21:IF CHRCODE=1 THEN PRINTESC(1062)ELSE PRINTESC(1063);
22:IF CHRCODE=1 THEN PRINTESC(1064)ELSE PRINTESC(1065);
20:CASE CHRCODE OF 0:PRINTESC(412);1:PRINTESC(1066);2:PRINTESC(1067);
3:PRINTESC(974);4:PRINTESC(1068);5:PRINTESC(976);
OTHERWISE PRINTESC(1069)END;
31:IF CHRCODE=100 THEN PRINTESC(1071)ELSE IF CHRCODE=101 THEN PRINTESC(
1072)ELSE IF CHRCODE=102 THEN PRINTESC(1073)ELSE PRINTESC(1070);{:1072}
{1089:}43:IF CHRCODE=0 THEN PRINTESC(1089)ELSE PRINTESC(1088);{:1089}
{1108:}
25:IF CHRCODE=10 THEN PRINTESC(1100)ELSE IF CHRCODE=11 THEN PRINTESC(
1099)ELSE PRINTESC(1098);
23:IF CHRCODE=1 THEN PRINTESC(1102)ELSE PRINTESC(1101);
24:IF CHRCODE=1 THEN PRINTESC(1104){1595:}
ELSE IF CHRCODE=2 THEN PRINTESC(1409)ELSE IF CHRCODE=3 THEN PRINTESC(
1410){:1595}ELSE PRINTESC(1103);{:1108}{1115:}
47:IF CHRCODE=1 THEN PRINTESC(45)ELSE PRINTESC(352);{:1115}{1143:}
48:IF CHRCODE=1 THEN PRINTESC(1136)ELSE PRINTESC(1135);{:1143}{1157:}
50:CASE CHRCODE OF 16:PRINTESC(874);17:PRINTESC(875);18:PRINTESC(876);
19:PRINTESC(877);20:PRINTESC(878);21:PRINTESC(879);22:PRINTESC(880);
23:PRINTESC(881);26:PRINTESC(883);OTHERWISE PRINTESC(882)END;
51:IF CHRCODE=1 THEN PRINTESC(887)ELSE IF CHRCODE=2 THEN PRINTESC(888)
ELSE PRINTESC(1137);{:1157}{1170:}53:PRINTSTYLE(CHRCODE);{:1170}{1179:}
52:CASE CHRCODE OF 1:PRINTESC(1156);2:PRINTESC(1157);3:PRINTESC(1158);
4:PRINTESC(1159);5:PRINTESC(1160);OTHERWISE PRINTESC(1155)END;{:1179}
{1189:}49:IF CHRCODE=30 THEN PRINTESC(884){1432:}
ELSE IF CHRCODE=1 THEN PRINTESC(886){:1432}ELSE PRINTESC(885);{:1189}
{1209:}
93:IF CHRCODE=1 THEN PRINTESC(1180)ELSE IF CHRCODE=2 THEN PRINTESC(1181)
{1504:}ELSE IF CHRCODE=8 THEN PRINTESC(1259){:1504}ELSE PRINTESC(1182);
97:IF CHRCODE=0 THEN PRINTESC(1183)ELSE IF CHRCODE=1 THEN PRINTESC(1184)
ELSE IF CHRCODE=2 THEN PRINTESC(1185)ELSE PRINTESC(1186);{:1209}{1220:}
94:IF CHRCODE<>0 THEN PRINTESC(1201)ELSE PRINTESC(1200);{:1220}{1223:}
95:CASE CHRCODE OF 0:PRINTESC(1202);1:PRINTESC(1203);2:PRINTESC(1204);
3:PRINTESC(1205);4:PRINTESC(1206);5:PRINTESC(1207);
OTHERWISE PRINTESC(1208)END;68:BEGIN PRINTESC(516);PRINTHEX(CHRCODE);
END;69:BEGIN PRINTESC(527);PRINTHEX(CHRCODE);END;{:1223}{1231:}
85:IF CHRCODE=11888 THEN PRINTESC(418)ELSE IF CHRCODE=12912 THEN
PRINTESC(422)ELSE IF CHRCODE=12144 THEN PRINTESC(419)ELSE IF CHRCODE=
12400 THEN PRINTESC(420)ELSE IF CHRCODE=12656 THEN PRINTESC(421)ELSE
PRINTESC(480);86:PRINTSIZE(CHRCODE-11840);{:1231}{1251:}
99:IF CHRCODE=1 THEN PRINTESC(962)ELSE PRINTESC(950);{:1251}{1255:}
78:IF CHRCODE=0 THEN PRINTESC(1226)ELSE PRINTESC(1227);{:1255}{1261:}
87:BEGIN PRINT(1235);SLOWPRINT(FONTNAME[CHRCODE]);
IF FONTSIZE[CHRCODE]<>FONTDSIZE[CHRCODE]THEN BEGIN PRINT(750);
PRINTSCALED(FONTSIZE[CHRCODE]);PRINT(400);END;END;{:1261}{1263:}
100:CASE CHRCODE OF 0:PRINTESC(275);1:PRINTESC(276);2:PRINTESC(277);
OTHERWISE PRINTESC(1236)END;{:1263}{1273:}
60:IF CHRCODE=0 THEN PRINTESC(1238)ELSE PRINTESC(1237);{:1273}{1278:}
58:IF CHRCODE=0 THEN PRINTESC(1239)ELSE PRINTESC(1240);{:1278}{1287:}
57:IF CHRCODE=12144 THEN PRINTESC(1246)ELSE PRINTESC(1247);{:1287}
{1292:}19:CASE CHRCODE OF 1:PRINTESC(1249);2:PRINTESC(1250);
3:PRINTESC(1251);{1410:}4:PRINTESC(1350);{:1410}{1419:}5:PRINTESC(1352);
{:1419}{1424:}6:PRINTESC(1355);{:1424}OTHERWISE PRINTESC(1248)END;
{:1292}{1295:}101:PRINT(1258);111,112,113,114:BEGIN N:=CMD-111;
IF MEM[MEM[CHRCODE].HH.RH].HH.LH=3585 THEN N:=N+4;
IF ODD(N DIV 4)THEN PRINTESC(1259);IF ODD(N)THEN PRINTESC(1180);
IF ODD(N DIV 2)THEN PRINTESC(1181);IF N>0 THEN PRINTCHAR(32);
PRINT(1260);END;115:PRINTESC(1261);{:1295}{1346:}
59:CASE CHRCODE OF 0:PRINTESC(1295);1:PRINTESC(603);2:PRINTESC(1296);
3:PRINTESC(1297);4:PRINTESC(1298);5:PRINTESC(1299);
OTHERWISE PRINT(1300)END;{:1346}OTHERWISE PRINT(574)END;END;{:298}
PROCEDURE SHOWEQTB(N:HALFWORD);
BEGIN IF N<1 THEN PRINTCHAR(63)ELSE IF N<10782 THEN{223:}
BEGIN SPRINTCS(N);PRINTCHAR(61);
PRINTCMDCHR(EQTB[N].HH.B0,EQTB[N].HH.RH);
IF EQTB[N].HH.B0>=111 THEN BEGIN PRINTCHAR(58);
SHOWTOKENLIST(MEM[EQTB[N].HH.RH].HH.RH,0,32);END;END{:223}
ELSE IF N<11312 THEN{229:}IF N<10800 THEN BEGIN PRINTSKIPPARAM(N-10782);
PRINTCHAR(61);
IF N<10797 THEN PRINTSPEC(EQTB[N].HH.RH,400)ELSE PRINTSPEC(EQTB[N].HH.RH
,338);END ELSE IF N<11056 THEN BEGIN PRINTESC(398);PRINTINT(N-10800);
PRINTCHAR(61);PRINTSPEC(EQTB[N].HH.RH,400);END ELSE BEGIN PRINTESC(399);
PRINTINT(N-11056);PRINTCHAR(61);PRINTSPEC(EQTB[N].HH.RH,338);END{:229}
ELSE IF N<13168 THEN{233:}IF N<11317 THEN BEGIN PRINTCMDCHR(84,N);
PRINTCHAR(61);
IF EQTB[N].HH.RH=0 THEN PRINTCHAR(48)ELSE IF N>11312 THEN BEGIN PRINTINT
(MEM[EQTB[N].HH.RH+1].INT);PRINTCHAR(32);
PRINTINT(MEM[EQTB[N].HH.RH+2].INT);
IF MEM[EQTB[N].HH.RH+1].INT>1 THEN PRINTESC(411);
END ELSE PRINTINT(MEM[EQTB[11312].HH.RH].HH.LH);
END ELSE IF N<11327 THEN BEGIN PRINTCMDCHR(72,N);PRINTCHAR(61);
IF EQTB[N].HH.RH<>0 THEN SHOWTOKENLIST(MEM[EQTB[N].HH.RH].HH.RH,0,32);
END ELSE IF N<11583 THEN BEGIN PRINTESC(410);PRINTINT(N-11327);
PRINTCHAR(61);
IF EQTB[N].HH.RH<>0 THEN SHOWTOKENLIST(MEM[EQTB[N].HH.RH].HH.RH,0,32);
END ELSE IF N<11839 THEN BEGIN PRINTESC(412);PRINTINT(N-11583);
PRINTCHAR(61);
IF EQTB[N].HH.RH=0 THEN PRINT(413)ELSE BEGIN DEPTHTHRESHOLD:=0;
BREADTHMAX:=1;SHOWNODELIST(EQTB[N].HH.RH);END;
END ELSE IF N<11888 THEN{234:}
BEGIN IF N=11839 THEN PRINT(414)ELSE IF N<11856 THEN BEGIN PRINTESC(415)
;PRINTINT(N-11840);END ELSE IF N<11872 THEN BEGIN PRINTESC(416);
PRINTINT(N-11856);END ELSE BEGIN PRINTESC(417);PRINTINT(N-11872);END;
PRINTCHAR(61);PRINTESC(HASH[10524+EQTB[N].HH.RH].RH);END{:234}ELSE{235:}
IF N<12912 THEN BEGIN IF N<12144 THEN BEGIN PRINTESC(418);
PRINTINT(N-11888);END ELSE IF N<12400 THEN BEGIN PRINTESC(419);
PRINTINT(N-12144);END ELSE IF N<12656 THEN BEGIN PRINTESC(420);
PRINTINT(N-12400);END ELSE BEGIN PRINTESC(421);PRINTINT(N-12656);END;
PRINTCHAR(61);PRINTINT(EQTB[N].HH.RH);END ELSE BEGIN PRINTESC(422);
PRINTINT(N-12912);PRINTCHAR(61);PRINTINT(EQTB[N].HH.RH);END{:235}{:233}
ELSE IF N<13745 THEN{242:}
BEGIN IF N<13233 THEN PRINTPARAM(N-13168)ELSE IF N<13489 THEN BEGIN
PRINTESC(479);PRINTINT(N-13233);END ELSE BEGIN PRINTESC(480);
PRINTINT(N-13489);END;PRINTCHAR(61);PRINTINT(EQTB[N].INT);END{:242}
ELSE IF N<=14021 THEN{251:}
BEGIN IF N<13766 THEN PRINTLENGTHPARAM(N-13745)ELSE BEGIN PRINTESC(503);
PRINTINT(N-13766);END;PRINTCHAR(61);PRINTSCALED(EQTB[N].INT);PRINT(400);
END{:251}ELSE PRINTCHAR(63);END;{:252}{259:}
FUNCTION IDLOOKUP(J,L:INTEGER):HALFWORD;LABEL 40;VAR H:INTEGER;
D:INTEGER;P:HALFWORD;K:HALFWORD;BEGIN{261:}H:=BUFFER[J];
FOR K:=J+1 TO J+L-1 DO BEGIN H:=H+H+BUFFER[K];
WHILE H>=8501 DO H:=H-8501;END{:261};P:=H+514;
WHILE TRUE DO BEGIN IF HASH[P].RH>0 THEN IF(STRSTART[HASH[P].RH+1]-
STRSTART[HASH[P].RH])=L THEN IF STREQBUF(HASH[P].RH,J)THEN GOTO 40;
IF HASH[P].LH=0 THEN BEGIN IF NONEWCONTROLSEQUENCE THEN P:=10781 ELSE{
260:}
BEGIN IF HASH[P].RH>0 THEN BEGIN REPEAT IF(HASHUSED=514)THEN OVERFLOW(
506,10000);HASHUSED:=HASHUSED-1;UNTIL HASH[HASHUSED].RH=0;
HASH[P].LH:=HASHUSED;P:=HASHUSED;END;
BEGIN IF POOLPTR+L>POOLSIZE THEN OVERFLOW(258,POOLSIZE-INITPOOLPTR);END;
D:=(POOLPTR-STRSTART[STRPTR]);
WHILE POOLPTR>STRSTART[STRPTR]DO BEGIN POOLPTR:=POOLPTR-1;
STRPOOL[POOLPTR+L]:=STRPOOL[POOLPTR];END;
FOR K:=J TO J+L-1 DO BEGIN STRPOOL[POOLPTR]:=BUFFER[K];
POOLPTR:=POOLPTR+1;END;HASH[P].RH:=MAKESTRING;POOLPTR:=POOLPTR+D;
CSCOUNT:=CSCOUNT+1;END{:260};GOTO 40;END;P:=HASH[P].LH;END;
40:IDLOOKUP:=P;END;{:259}{264:}PROCEDURE PRIMITIVE(S:STRNUMBER;
C:QUARTERWORD;O:HALFWORD);VAR K:POOLPOINTER;J:0..BUFSIZE;L:SMALLNUMBER;
BEGIN IF S<256 THEN CURVAL:=S+257 ELSE BEGIN K:=STRSTART[S];
L:=STRSTART[S+1]-K;IF FIRST+L>BUFSIZE+1 THEN OVERFLOW(257,BUFSIZE);
FOR J:=0 TO L-1 DO BUFFER[FIRST+J]:=STRPOOL[K+J];
CURVAL:=IDLOOKUP(FIRST,L);BEGIN STRPTR:=STRPTR-1;
POOLPTR:=STRSTART[STRPTR];END;HASH[CURVAL].RH:=S;END;
EQTB[CURVAL].HH.B1:=1;EQTB[CURVAL].HH.B0:=C;EQTB[CURVAL].HH.RH:=O;END;
{:264}{268:}{284:}PROCEDURE RESTORETRACE(P:HALFWORD;S:STRNUMBER);
BEGIN BEGINDIAGNOSTIC;PRINTCHAR(123);PRINT(S);PRINTCHAR(32);SHOWEQTB(P);
PRINTCHAR(125);ENDDIAGNOSTIC(FALSE);END;{:284}{1395:}
PROCEDURE PRINTGROUP(E:BOOLEAN);LABEL 10;
BEGIN CASE CURGROUP OF 0:BEGIN PRINT(1325);GOTO 10;END;
1,14:BEGIN IF CURGROUP=14 THEN PRINT(1326);PRINT(1327);END;
2,3:BEGIN IF CURGROUP=3 THEN PRINT(1328);PRINT(1069);END;4:PRINT(976);
5:PRINT(1068);6,7:BEGIN IF CURGROUP=7 THEN PRINT(1329);PRINT(1330);END;
8:PRINT(401);10:PRINT(1331);11:PRINT(331);12:PRINT(543);
9,13,15,16:BEGIN PRINT(346);
IF CURGROUP=13 THEN PRINT(1332)ELSE IF CURGROUP=15 THEN PRINT(1333)ELSE
IF CURGROUP=16 THEN PRINT(1334);END;END;PRINT(1335);PRINTINT(CURLEVEL);
PRINTCHAR(41);
IF SAVESTACK[SAVEPTR-1].INT<>0 THEN BEGIN IF E THEN PRINT(367)ELSE PRINT
(267);PRINTINT(SAVESTACK[SAVEPTR-1].INT);END;10:END;{:1395}{1396:}
PROCEDURE GROUPTRACE(E:BOOLEAN);BEGIN BEGINDIAGNOSTIC;PRINTCHAR(123);
IF E THEN PRINT(1336)ELSE PRINT(1337);PRINTGROUP(E);PRINTCHAR(125);
ENDDIAGNOSTIC(FALSE);END;{:1396}{1489:}FUNCTION PSEUDOINPUT:BOOLEAN;
VAR P:HALFWORD;SZ:INTEGER;W:FOURQUARTERS;R:HALFWORD;BEGIN LAST:=FIRST;
P:=MEM[PSEUDOFILES].HH.LH;
IF P=0 THEN PSEUDOINPUT:=FALSE ELSE BEGIN MEM[PSEUDOFILES].HH.LH:=MEM[P]
.HH.RH;SZ:=MEM[P].HH.LH;IF 4*SZ-3>=BUFSIZE-LAST THEN{35:}
IF FORMATIDENT=0 THEN BEGIN WRITELN(TERMOUT,'Buffer size exceeded!');
GOTO 9999;END ELSE BEGIN CURINPUT.LOCFIELD:=FIRST;
CURINPUT.LIMITFIELD:=LAST-1;OVERFLOW(257,BUFSIZE);END{:35};LAST:=FIRST;
FOR R:=P+1 TO P+SZ-1 DO BEGIN W:=MEM[R].QQQQ;BUFFER[LAST]:=W.B0;
BUFFER[LAST+1]:=W.B1;BUFFER[LAST+2]:=W.B2;BUFFER[LAST+3]:=W.B3;
LAST:=LAST+4;END;IF LAST>=MAXBUFSTACK THEN MAXBUFSTACK:=LAST+1;
WHILE(LAST>FIRST)AND(BUFFER[LAST-1]=32)DO LAST:=LAST-1;FREENODE(P,SZ);
PSEUDOINPUT:=TRUE;END;END;{:1489}{1490:}PROCEDURE PSEUDOCLOSE;
VAR P,Q:HALFWORD;BEGIN P:=MEM[PSEUDOFILES].HH.RH;
Q:=MEM[PSEUDOFILES].HH.LH;BEGIN MEM[PSEUDOFILES].HH.RH:=AVAIL;
AVAIL:=PSEUDOFILES;DYNUSED:=DYNUSED-1;END;PSEUDOFILES:=P;
WHILE Q<>0 DO BEGIN P:=Q;Q:=MEM[P].HH.RH;FREENODE(P,MEM[P].HH.LH);END;
END;{:1490}{1507:}PROCEDURE GROUPWARNING;VAR I:0..MAXINOPEN;W:BOOLEAN;
BEGIN BASEPTR:=INPUTPTR;INPUTSTACK[BASEPTR]:=CURINPUT;I:=INOPEN;
W:=FALSE;WHILE(GRPSTACK[I]=CURBOUNDARY)AND(I>0)DO BEGIN{1508:}
IF EQTB[13227].INT>0 THEN BEGIN WHILE(INPUTSTACK[BASEPTR].STATEFIELD=0)
OR(INPUTSTACK[BASEPTR].INDEXFIELD>I)DO BASEPTR:=BASEPTR-1;
IF INPUTSTACK[BASEPTR].NAMEFIELD>17 THEN W:=TRUE;END{:1508};
GRPSTACK[I]:=SAVESTACK[SAVEPTR].HH.RH;I:=I-1;END;
IF W THEN BEGIN PRINTNL(1383);PRINTGROUP(TRUE);PRINT(1384);PRINTLN;
IF EQTB[13227].INT>1 THEN SHOWCONTEXT;IF HISTORY=0 THEN HISTORY:=1;END;
END;{:1507}{1509:}PROCEDURE IFWARNING;VAR I:0..MAXINOPEN;W:BOOLEAN;
BEGIN BASEPTR:=INPUTPTR;INPUTSTACK[BASEPTR]:=CURINPUT;I:=INOPEN;
W:=FALSE;WHILE IFSTACK[I]=CONDPTR DO BEGIN{1508:}
IF EQTB[13227].INT>0 THEN BEGIN WHILE(INPUTSTACK[BASEPTR].STATEFIELD=0)
OR(INPUTSTACK[BASEPTR].INDEXFIELD>I)DO BASEPTR:=BASEPTR-1;
IF INPUTSTACK[BASEPTR].NAMEFIELD>17 THEN W:=TRUE;END{:1508};
IFSTACK[I]:=MEM[CONDPTR].HH.RH;I:=I-1;END;IF W THEN BEGIN PRINTNL(1383);
PRINTCMDCHR(105,CURIF);IF IFLINE<>0 THEN BEGIN PRINT(1356);
PRINTINT(IFLINE);END;PRINT(1384);PRINTLN;
IF EQTB[13227].INT>1 THEN SHOWCONTEXT;IF HISTORY=0 THEN HISTORY:=1;END;
END;{:1509}{1510:}PROCEDURE FILEWARNING;VAR P:HALFWORD;L:QUARTERWORD;
C:QUARTERWORD;I:INTEGER;BEGIN P:=SAVEPTR;L:=CURLEVEL;C:=CURGROUP;
SAVEPTR:=CURBOUNDARY;
WHILE GRPSTACK[INOPEN]<>SAVEPTR DO BEGIN CURLEVEL:=CURLEVEL-1;
PRINTNL(1385);PRINTGROUP(TRUE);PRINT(1386);
CURGROUP:=SAVESTACK[SAVEPTR].HH.B1;
SAVEPTR:=SAVESTACK[SAVEPTR].HH.RH END;SAVEPTR:=P;CURLEVEL:=L;
CURGROUP:=C;P:=CONDPTR;L:=IFLIMIT;C:=CURIF;I:=IFLINE;
WHILE IFSTACK[INOPEN]<>CONDPTR DO BEGIN PRINTNL(1385);
PRINTCMDCHR(105,CURIF);IF IFLIMIT=2 THEN PRINTESC(785);
IF IFLINE<>0 THEN BEGIN PRINT(1356);PRINTINT(IFLINE);END;PRINT(1386);
IFLINE:=MEM[CONDPTR+1].INT;CURIF:=MEM[CONDPTR].HH.B1;
IFLIMIT:=MEM[CONDPTR].HH.B0;CONDPTR:=MEM[CONDPTR].HH.RH;END;CONDPTR:=P;
IFLIMIT:=L;CURIF:=C;IFLINE:=I;PRINTLN;
IF EQTB[13227].INT>1 THEN SHOWCONTEXT;IF HISTORY=0 THEN HISTORY:=1;END;
{:1510}{1554:}PROCEDURE DELETESAREF(Q:HALFWORD);LABEL 10;VAR P:HALFWORD;
I:SMALLNUMBER;S:SMALLNUMBER;BEGIN MEM[Q+1].HH.LH:=MEM[Q+1].HH.LH-1;
IF MEM[Q+1].HH.LH<>0 THEN GOTO 10;
IF MEM[Q].HH.B0<32 THEN IF MEM[Q+2].INT=0 THEN S:=3 ELSE GOTO 10 ELSE
BEGIN IF MEM[Q].HH.B0<64 THEN IF MEM[Q+1].HH.RH=0 THEN DELETEGLUEREF(0)
ELSE GOTO 10 ELSE IF MEM[Q+1].HH.RH<>0 THEN GOTO 10;S:=2;END;
REPEAT I:=MEM[Q].HH.B0 MOD 16;P:=Q;Q:=MEM[P].HH.RH;FREENODE(P,S);
IF Q=0 THEN BEGIN SAROOT[I]:=0;GOTO 10;END;
BEGIN IF ODD(I)THEN MEM[Q+(I DIV 2)+1].HH.RH:=0 ELSE MEM[Q+(I DIV 2)+1].
HH.LH:=0;MEM[Q].HH.B1:=MEM[Q].HH.B1-1;END;S:=9;UNTIL MEM[Q].HH.B1>0;
10:END;{:1554}{1556:}PROCEDURE SHOWSA(P:HALFWORD;S:STRNUMBER);
VAR T:SMALLNUMBER;BEGIN BEGINDIAGNOSTIC;PRINTCHAR(123);PRINT(S);
PRINTCHAR(32);
IF P=0 THEN PRINTCHAR(63)ELSE BEGIN T:=(MEM[P].HH.B0 DIV 16);
IF T<4 THEN PRINTCMDCHR(89,P)ELSE IF T=4 THEN BEGIN PRINTESC(412);
PRINTSANUM(P);END ELSE IF T=5 THEN PRINTCMDCHR(71,P)ELSE PRINTCHAR(63);
PRINTCHAR(61);
IF T=0 THEN PRINTINT(MEM[P+2].INT)ELSE IF T=1 THEN BEGIN PRINTSCALED(MEM
[P+2].INT);PRINT(400);END ELSE BEGIN P:=MEM[P+1].HH.RH;
IF T=2 THEN PRINTSPEC(P,400)ELSE IF T=3 THEN PRINTSPEC(P,338)ELSE IF T=4
THEN IF P=0 THEN PRINT(413)ELSE BEGIN DEPTHTHRESHOLD:=0;BREADTHMAX:=1;
SHOWNODELIST(P);
END ELSE IF T=5 THEN BEGIN IF P<>0 THEN SHOWTOKENLIST(MEM[P].HH.RH,0,32)
;END ELSE PRINTCHAR(63);END;END;PRINTCHAR(125);ENDDIAGNOSTIC(FALSE);END;
{:1556}{1570:}PROCEDURE SASAVE(P:HALFWORD);VAR Q:HALFWORD;I:QUARTERWORD;
BEGIN IF CURLEVEL<>SALEVEL THEN BEGIN IF SAVEPTR>MAXSAVESTACK THEN BEGIN
MAXSAVESTACK:=SAVEPTR;
IF MAXSAVESTACK>SAVESIZE-7 THEN OVERFLOW(545,SAVESIZE);END;
SAVESTACK[SAVEPTR].HH.B0:=4;SAVESTACK[SAVEPTR].HH.B1:=SALEVEL;
SAVESTACK[SAVEPTR].HH.RH:=SACHAIN;SAVEPTR:=SAVEPTR+1;SACHAIN:=0;
SALEVEL:=CURLEVEL;END;I:=MEM[P].HH.B0;
IF I<32 THEN BEGIN IF MEM[P+2].INT=0 THEN BEGIN Q:=GETNODE(2);I:=96;
END ELSE BEGIN Q:=GETNODE(3);MEM[Q+2].INT:=MEM[P+2].INT;END;
MEM[Q+1].HH.RH:=0;END ELSE BEGIN Q:=GETNODE(2);
MEM[Q+1].HH.RH:=MEM[P+1].HH.RH;END;MEM[Q+1].HH.LH:=P;MEM[Q].HH.B0:=I;
MEM[Q].HH.B1:=MEM[P].HH.B1;MEM[Q].HH.RH:=SACHAIN;SACHAIN:=Q;
MEM[P+1].HH.LH:=MEM[P+1].HH.LH+1;END;{:1570}{1571:}
PROCEDURE SADESTROY(P:HALFWORD);
BEGIN IF MEM[P].HH.B0<64 THEN DELETEGLUEREF(MEM[P+1].HH.RH)ELSE IF MEM[P
+1].HH.RH<>0 THEN IF MEM[P].HH.B0<80 THEN FLUSHNODELIST(MEM[P+1].HH.RH)
ELSE DELETETOKENREF(MEM[P+1].HH.RH);END;{:1571}{1572:}
PROCEDURE SADEF(P:HALFWORD;E:HALFWORD);
BEGIN MEM[P+1].HH.LH:=MEM[P+1].HH.LH+1;
IF MEM[P+1].HH.RH=E THEN BEGIN IF EQTB[13223].INT>0 THEN SHOWSA(P,547);
SADESTROY(P);END ELSE BEGIN IF EQTB[13223].INT>0 THEN SHOWSA(P,548);
IF MEM[P].HH.B1=CURLEVEL THEN SADESTROY(P)ELSE SASAVE(P);
MEM[P].HH.B1:=CURLEVEL;MEM[P+1].HH.RH:=E;
IF EQTB[13223].INT>0 THEN SHOWSA(P,549);END;DELETESAREF(P);END;
PROCEDURE SAWDEF(P:HALFWORD;W:INTEGER);
BEGIN MEM[P+1].HH.LH:=MEM[P+1].HH.LH+1;
IF MEM[P+2].INT=W THEN BEGIN IF EQTB[13223].INT>0 THEN SHOWSA(P,547);
END ELSE BEGIN IF EQTB[13223].INT>0 THEN SHOWSA(P,548);
IF MEM[P].HH.B1<>CURLEVEL THEN SASAVE(P);MEM[P].HH.B1:=CURLEVEL;
MEM[P+2].INT:=W;IF EQTB[13223].INT>0 THEN SHOWSA(P,549);END;
DELETESAREF(P);END;{:1572}{1573:}PROCEDURE GSADEF(P:HALFWORD;
E:HALFWORD);BEGIN MEM[P+1].HH.LH:=MEM[P+1].HH.LH+1;
IF EQTB[13223].INT>0 THEN SHOWSA(P,550);SADESTROY(P);MEM[P].HH.B1:=1;
MEM[P+1].HH.RH:=E;IF EQTB[13223].INT>0 THEN SHOWSA(P,549);
DELETESAREF(P);END;PROCEDURE GSAWDEF(P:HALFWORD;W:INTEGER);
BEGIN MEM[P+1].HH.LH:=MEM[P+1].HH.LH+1;
IF EQTB[13223].INT>0 THEN SHOWSA(P,550);MEM[P].HH.B1:=1;MEM[P+2].INT:=W;
IF EQTB[13223].INT>0 THEN SHOWSA(P,549);DELETESAREF(P);END;{:1573}
{1574:}PROCEDURE SARESTORE;VAR P:HALFWORD;
BEGIN REPEAT P:=MEM[SACHAIN+1].HH.LH;
IF MEM[P].HH.B1=1 THEN BEGIN IF MEM[P].HH.B0>=32 THEN SADESTROY(SACHAIN)
;IF EQTB[13205].INT>0 THEN SHOWSA(P,552);
END ELSE BEGIN IF MEM[P].HH.B0<32 THEN IF MEM[SACHAIN].HH.B0<32 THEN MEM
[P+2].INT:=MEM[SACHAIN+2].INT ELSE MEM[P+2].INT:=0 ELSE BEGIN SADESTROY(
P);MEM[P+1].HH.RH:=MEM[SACHAIN+1].HH.RH;END;
MEM[P].HH.B1:=MEM[SACHAIN].HH.B1;
IF EQTB[13205].INT>0 THEN SHOWSA(P,553);END;DELETESAREF(P);P:=SACHAIN;
SACHAIN:=MEM[P].HH.RH;
IF MEM[P].HH.B0<32 THEN FREENODE(P,3)ELSE FREENODE(P,2);UNTIL SACHAIN=0;
END;{:1574}{:268}{274:}PROCEDURE NEWSAVELEVEL(C:GROUPCODE);
BEGIN IF SAVEPTR>MAXSAVESTACK THEN BEGIN MAXSAVESTACK:=SAVEPTR;
IF MAXSAVESTACK>SAVESIZE-7 THEN OVERFLOW(545,SAVESIZE);END;
IF(ETEXMODE=1)THEN BEGIN SAVESTACK[SAVEPTR+0].INT:=LINE;
SAVEPTR:=SAVEPTR+1;END;SAVESTACK[SAVEPTR].HH.B0:=3;
SAVESTACK[SAVEPTR].HH.B1:=CURGROUP;
SAVESTACK[SAVEPTR].HH.RH:=CURBOUNDARY;
IF CURLEVEL=511 THEN OVERFLOW(546,511);CURBOUNDARY:=SAVEPTR;CURGROUP:=C;
IF EQTB[13224].INT>0 THEN GROUPTRACE(FALSE);CURLEVEL:=CURLEVEL+1;
SAVEPTR:=SAVEPTR+1;END;{:274}{275:}PROCEDURE EQDESTROY(W:MEMORYWORD);
VAR Q:HALFWORD;
BEGIN CASE W.HH.B0 OF 111,112,113,114:DELETETOKENREF(W.HH.RH);
117:DELETEGLUEREF(W.HH.RH);118:BEGIN Q:=W.HH.RH;
IF Q<>0 THEN FREENODE(Q,MEM[Q].HH.LH+MEM[Q].HH.LH+1);END;
119:FLUSHNODELIST(W.HH.RH);{1567:}
71,89:IF(W.HH.RH<0)OR(W.HH.RH>19)THEN DELETESAREF(W.HH.RH);{:1567}
OTHERWISE END;END;{:275}{276:}PROCEDURE EQSAVE(P:HALFWORD;
L:QUARTERWORD);
BEGIN IF SAVEPTR>MAXSAVESTACK THEN BEGIN MAXSAVESTACK:=SAVEPTR;
IF MAXSAVESTACK>SAVESIZE-7 THEN OVERFLOW(545,SAVESIZE);END;
IF L=0 THEN SAVESTACK[SAVEPTR].HH.B0:=1 ELSE BEGIN SAVESTACK[SAVEPTR]:=
EQTB[P];SAVEPTR:=SAVEPTR+1;SAVESTACK[SAVEPTR].HH.B0:=0;END;
SAVESTACK[SAVEPTR].HH.B1:=L;SAVESTACK[SAVEPTR].HH.RH:=P;
SAVEPTR:=SAVEPTR+1;END;{:276}{277:}PROCEDURE EQDEFINE(P:HALFWORD;
T:QUARTERWORD;E:HALFWORD);LABEL 10;
BEGIN IF(ETEXMODE=1)AND(EQTB[P].HH.B0=T)AND(EQTB[P].HH.RH=E)THEN BEGIN
IF EQTB[13223].INT>0 THEN RESTORETRACE(P,547);EQDESTROY(EQTB[P]);
GOTO 10;END;IF EQTB[13223].INT>0 THEN RESTORETRACE(P,548);
IF EQTB[P].HH.B1=CURLEVEL THEN EQDESTROY(EQTB[P])ELSE IF CURLEVEL>1 THEN
EQSAVE(P,EQTB[P].HH.B1);EQTB[P].HH.B1:=CURLEVEL;EQTB[P].HH.B0:=T;
EQTB[P].HH.RH:=E;IF EQTB[13223].INT>0 THEN RESTORETRACE(P,549);10:END;
{:277}{278:}PROCEDURE EQWORDDEFINE(P:HALFWORD;W:INTEGER);LABEL 10;
BEGIN IF(ETEXMODE=1)AND(EQTB[P].INT=W)THEN BEGIN IF EQTB[13223].INT>0
THEN RESTORETRACE(P,547);GOTO 10;END;
IF EQTB[13223].INT>0 THEN RESTORETRACE(P,548);
IF XEQLEVEL[P]<>CURLEVEL THEN BEGIN EQSAVE(P,XEQLEVEL[P]);
XEQLEVEL[P]:=CURLEVEL;END;EQTB[P].INT:=W;
IF EQTB[13223].INT>0 THEN RESTORETRACE(P,549);10:END;{:278}{279:}
PROCEDURE GEQDEFINE(P:HALFWORD;T:QUARTERWORD;E:HALFWORD);
BEGIN IF EQTB[13223].INT>0 THEN RESTORETRACE(P,550);
BEGIN EQDESTROY(EQTB[P]);EQTB[P].HH.B1:=1;EQTB[P].HH.B0:=T;
EQTB[P].HH.RH:=E;END;IF EQTB[13223].INT>0 THEN RESTORETRACE(P,549);END;
PROCEDURE GEQWORDDEFINE(P:HALFWORD;W:INTEGER);
BEGIN IF EQTB[13223].INT>0 THEN RESTORETRACE(P,550);
BEGIN EQTB[P].INT:=W;XEQLEVEL[P]:=1;END;
IF EQTB[13223].INT>0 THEN RESTORETRACE(P,549);END;{:279}{280:}
PROCEDURE SAVEFORAFTER(T:HALFWORD);
BEGIN IF CURLEVEL>1 THEN BEGIN IF SAVEPTR>MAXSAVESTACK THEN BEGIN
MAXSAVESTACK:=SAVEPTR;
IF MAXSAVESTACK>SAVESIZE-7 THEN OVERFLOW(545,SAVESIZE);END;
SAVESTACK[SAVEPTR].HH.B0:=2;SAVESTACK[SAVEPTR].HH.B1:=0;
SAVESTACK[SAVEPTR].HH.RH:=T;SAVEPTR:=SAVEPTR+1;END;END;{:280}{281:}
PROCEDURE BACKINPUT;FORWARD;PROCEDURE UNSAVE;LABEL 30;VAR P:HALFWORD;
L:QUARTERWORD;T:HALFWORD;A:BOOLEAN;BEGIN A:=FALSE;
IF CURLEVEL>1 THEN BEGIN CURLEVEL:=CURLEVEL-1;{282:}
WHILE TRUE DO BEGIN SAVEPTR:=SAVEPTR-1;
IF SAVESTACK[SAVEPTR].HH.B0=3 THEN GOTO 30;P:=SAVESTACK[SAVEPTR].HH.RH;
IF SAVESTACK[SAVEPTR].HH.B0=2 THEN{326:}BEGIN T:=CURTOK;CURTOK:=P;
IF A THEN BEGIN P:=GETAVAIL;MEM[P].HH.LH:=CURTOK;
MEM[P].HH.RH:=CURINPUT.LOCFIELD;CURINPUT.LOCFIELD:=P;
CURINPUT.STARTFIELD:=P;
IF CURTOK<768 THEN IF CURTOK<512 THEN ALIGNSTATE:=ALIGNSTATE-1 ELSE
ALIGNSTATE:=ALIGNSTATE+1;END ELSE BEGIN BACKINPUT;A:=(ETEXMODE=1);END;
CURTOK:=T;END{:326}
ELSE IF SAVESTACK[SAVEPTR].HH.B0=4 THEN BEGIN SARESTORE;SACHAIN:=P;
SALEVEL:=SAVESTACK[SAVEPTR].HH.B1;
END ELSE BEGIN IF SAVESTACK[SAVEPTR].HH.B0=0 THEN BEGIN L:=SAVESTACK[
SAVEPTR].HH.B1;SAVEPTR:=SAVEPTR-1;
END ELSE SAVESTACK[SAVEPTR]:=EQTB[10781];{283:}
IF P<13168 THEN IF EQTB[P].HH.B1=1 THEN BEGIN EQDESTROY(SAVESTACK[
SAVEPTR]);IF EQTB[13205].INT>0 THEN RESTORETRACE(P,552);
END ELSE BEGIN EQDESTROY(EQTB[P]);EQTB[P]:=SAVESTACK[SAVEPTR];
IF EQTB[13205].INT>0 THEN RESTORETRACE(P,553);
END ELSE IF XEQLEVEL[P]<>1 THEN BEGIN EQTB[P]:=SAVESTACK[SAVEPTR];
XEQLEVEL[P]:=L;IF EQTB[13205].INT>0 THEN RESTORETRACE(P,553);
END ELSE BEGIN IF EQTB[13205].INT>0 THEN RESTORETRACE(P,552);END{:283};
END;END;30:IF EQTB[13224].INT>0 THEN GROUPTRACE(TRUE);
IF GRPSTACK[INOPEN]=CURBOUNDARY THEN GROUPWARNING;
CURGROUP:=SAVESTACK[SAVEPTR].HH.B1;
CURBOUNDARY:=SAVESTACK[SAVEPTR].HH.RH;
IF(ETEXMODE=1)THEN SAVEPTR:=SAVEPTR-1{:282};END ELSE CONFUSION(551);END;
{:281}{288:}PROCEDURE PREPAREMAG;
BEGIN IF(MAGSET>0)AND(EQTB[13185].INT<>MAGSET)THEN BEGIN BEGIN IF
INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);COPYERR:=SAVEIT;
REWRITE(TEMPFILE);PRINT(555);END;PRINTINT(EQTB[13185].INT);PRINT(556);
PRINTNL(557);BEGIN HELPPTR:=2;HELPLINE[1]:=558;HELPLINE[0]:=559;END;
INTERROR(MAGSET);GEQWORDDEFINE(13185,MAGSET);END;
IF(EQTB[13185].INT<=0)OR(EQTB[13185].INT>32768)THEN BEGIN BEGIN IF
INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);COPYERR:=SAVEIT;
REWRITE(TEMPFILE);PRINT(560);END;BEGIN HELPPTR:=1;HELPLINE[0]:=561;END;
INTERROR(EQTB[13185].INT);GEQWORDDEFINE(13185,1000);END;
MAGSET:=EQTB[13185].INT;END;{:288}{295:}PROCEDURE TOKENSHOW(P:HALFWORD);
BEGIN IF P<>0 THEN SHOWTOKENLIST(MEM[P].HH.RH,0,10000000);END;{:295}
{296:}PROCEDURE PRINTMEANING;BEGIN PRINTCMDCHR(CURCMD,CURCHR);
IF CURCMD>=111 THEN BEGIN PRINTCHAR(58);PRINTLN;TOKENSHOW(CURCHR);
END ELSE IF(CURCMD=110)AND(CURCHR<5)THEN BEGIN PRINTCHAR(58);PRINTLN;
TOKENSHOW(CURMARK[CURCHR]);END;END;{:296}{299:}PROCEDURE SHOWCURCMDCHR;
VAR N:INTEGER;L:INTEGER;P:HALFWORD;BEGIN BEGINDIAGNOSTIC;PRINTNL(123);
IF CURLIST.MODEFIELD<>SHOWNMODE THEN BEGIN PRINTMODE(CURLIST.MODEFIELD);
PRINT(575);SHOWNMODE:=CURLIST.MODEFIELD;END;PRINTCMDCHR(CURCMD,CURCHR);
IF EQTB[13225].INT>0 THEN IF CURCMD>=105 THEN IF CURCMD<=106 THEN BEGIN
PRINT(575);IF CURCMD=106 THEN BEGIN PRINTCMDCHR(105,CURIF);
PRINTCHAR(32);N:=0;L:=IFLINE;END ELSE BEGIN N:=1;L:=LINE;END;P:=CONDPTR;
WHILE P<>0 DO BEGIN N:=N+1;P:=MEM[P].HH.RH;END;PRINT(576);PRINTINT(N);
PRINTCHAR(41);IF L<>0 THEN BEGIN PRINT(1356);PRINTINT(L);END;END;
PRINTCHAR(125);ENDDIAGNOSTIC(FALSE);END;{:299}{311:}
PROCEDURE SHOWCONTEXT;LABEL 30;VAR OLDSETTING:0..22;NN:INTEGER;
BOTTOMLINE:BOOLEAN;{315:}I:0..BUFSIZE;J:0..BUFSIZE;L:0..HALFERRORLINE;
M:INTEGER;N:0..ERRORLINE;P:INTEGER;Q:INTEGER;{:315}
BEGIN BASEPTR:=INPUTPTR;INPUTSTACK[BASEPTR]:=CURINPUT;{1605:}
IF DIAGQUAL THEN WRITELN(DIAGFILE,'!');
IF DIAGQUAL THEN WRITELN(DIAGFILE,'  start diagnostic'){:1605};NN:=-1;
BOTTOMLINE:=FALSE;WHILE TRUE DO BEGIN CURINPUT:=INPUTSTACK[BASEPTR];
IF(CURINPUT.STATEFIELD<>0)THEN IF(CURINPUT.NAMEFIELD>19)OR(BASEPTR=0)
THEN BOTTOMLINE:=TRUE;
IF(BASEPTR=INPUTPTR)OR BOTTOMLINE OR(NN<EQTB[13222].INT)THEN{312:}
BEGIN IF(BASEPTR=INPUTPTR)OR(CURINPUT.STATEFIELD<>0)OR(CURINPUT.
INDEXFIELD<>3)OR(CURINPUT.LOCFIELD<>0)THEN BEGIN TALLY:=0;
OLDSETTING:=SELECTOR;IF CURINPUT.STATEFIELD<>0 THEN BEGIN{313:}
IF CURINPUT.NAMEFIELD<=17 THEN BEGIN{1607:}
IF DIAGQUAL THEN WRITE(DIAGFILE,'    region/text/label="');
COPYERR:=PRINTIT;LABELSIZE:=14{:1607};
IF(CURINPUT.NAMEFIELD=0)THEN IF BASEPTR=0 THEN PRINTNL(582)ELSE PRINTNL(
583)ELSE BEGIN PRINTNL(584);
IF CURINPUT.NAMEFIELD=17 THEN PRINTCHAR(42)ELSE PRINTINT(CURINPUT.
NAMEFIELD-1);PRINTCHAR(62);END;{1608:}COPYERR:=IGNOREIT;
IF DIAGQUAL THEN WRITE(DIAGFILE,'" "'){:1608};
END ELSE IF CURINPUT.INDEXFIELD<>INOPEN THEN BEGIN PRINTNL(585);
PRINTINT(LINESTACK[CURINPUT.INDEXFIELD+1]);END ELSE BEGIN PRINTNL(585);
PRINTINT(LINE);{1609:}
IF DIAGQUAL THEN WRITE(DIAGFILE,'    region/file/primary ');
DIAGPRINT(CURINPUT.NAMEFIELD);IF DIAGQUAL THEN WRITELN(DIAGFILE,' -');
IF DIAGQUAL THEN WRITELN(DIAGFILE,'          /line=',LINE:1,
'/column_range=(1,65535)'){:1609};END;PRINTCHAR(32){:313};{318:}
BEGIN L:=TALLY;TALLY:=0;SELECTOR:=20;TRICKCOUNT:=1000000;END;
IF BUFFER[CURINPUT.LIMITFIELD]=EQTB[13216].INT THEN J:=CURINPUT.
LIMITFIELD ELSE J:=CURINPUT.LIMITFIELD+1;
IF J>0 THEN FOR I:=CURINPUT.STARTFIELD TO J-1 DO BEGIN IF I=CURINPUT.
LOCFIELD THEN BEGIN FIRSTCOUNT:=TALLY;
TRICKCOUNT:=TALLY+1+ERRORLINE-HALFERRORLINE;
IF TRICKCOUNT<ERRORLINE THEN TRICKCOUNT:=ERRORLINE;END;PRINT(BUFFER[I]);
END;IF CURINPUT.NAMEFIELD<=17 THEN{1613:}BEGIN COPYERR:=PRINTIT;
LABELSIZE:=-1 END{:1613}{:318};END ELSE BEGIN{314:}{1610:}
IF DIAGQUAL THEN WRITE(DIAGFILE,'    region/text/label="');
COPYERR:=PRINTIT;LABELSIZE:=14{:1610};
CASE CURINPUT.INDEXFIELD OF 0:PRINTNL(586);1,2:PRINTNL(587);
3:IF CURINPUT.LOCFIELD=0 THEN PRINTNL(588)ELSE PRINTNL(589);
4:PRINTNL(590);5:BEGIN PRINTLN;PRINTCS(CURINPUT.NAMEFIELD);END;
6:PRINTNL(591);7:PRINTNL(592);8:PRINTNL(593);9:PRINTNL(594);
10:PRINTNL(595);11:PRINTNL(596);12:PRINTNL(597);13:PRINTNL(598);
14:PRINTNL(599);15:PRINTNL(600);16:PRINTNL(601);
OTHERWISE PRINTNL(63)END;{1608:}COPYERR:=IGNOREIT;
IF DIAGQUAL THEN WRITE(DIAGFILE,'" "'){:1608}{:314};{319:}
BEGIN L:=TALLY;TALLY:=0;SELECTOR:=20;TRICKCOUNT:=1000000;END;
IF CURINPUT.INDEXFIELD<5 THEN SHOWTOKENLIST(CURINPUT.STARTFIELD,CURINPUT
.LOCFIELD,100000)ELSE SHOWTOKENLIST(MEM[CURINPUT.STARTFIELD].HH.RH,
CURINPUT.LOCFIELD,100000);{1613:}BEGIN COPYERR:=PRINTIT;
LABELSIZE:=-1 END{:1613};{:319};END;SELECTOR:=OLDSETTING;{317:}
IF TRICKCOUNT=1000000 THEN BEGIN FIRSTCOUNT:=TALLY;
TRICKCOUNT:=TALLY+1+ERRORLINE-HALFERRORLINE;
IF TRICKCOUNT<ERRORLINE THEN TRICKCOUNT:=ERRORLINE;END;
IF TALLY<TRICKCOUNT THEN M:=TALLY-FIRSTCOUNT ELSE M:=TRICKCOUNT-
FIRSTCOUNT;IF L+FIRSTCOUNT<=HALFERRORLINE THEN BEGIN P:=0;
N:=L+FIRSTCOUNT;END ELSE BEGIN PRINT(278);
P:=L+FIRSTCOUNT-HALFERRORLINE+3;N:=HALFERRORLINE;END;
FOR Q:=P TO FIRSTCOUNT-1 DO PRINTCHAR(TRICKBUF[Q MOD ERRORLINE]);{1611:}
IF COPYERR=PRINTIT THEN BEGIN COPYERR:=IGNOREIT;PRINTLN;
FOR Q:=1 TO N DO PRINTCHAR(32);COPYERR:=PRINTIT END ELSE BEGIN PRINTLN;
FOR Q:=1 TO N DO PRINTCHAR(32);END{:1611};
IF M+N<=ERRORLINE THEN P:=FIRSTCOUNT+M ELSE P:=FIRSTCOUNT+(ERRORLINE-N-3
);FOR Q:=FIRSTCOUNT TO P-1 DO PRINTCHAR(TRICKBUF[Q MOD ERRORLINE]);
IF M+N>ERRORLINE THEN PRINT(278);{1612:}
IF COPYERR=PRINTIT THEN BEGIN IF DIAGQUAL THEN WRITE(DIAGFILE,
'"/line=1/column_range=(');N:=N-L;
IF DIAGQUAL THEN WRITELN(DIAGFILE,N+1:1,',65535)');COPYERR:=IGNOREIT;
END ELSE IF DIAGQUAL THEN WRITELN(DIAGFILE,'    region/nested/column=',
CURINPUT.LOCFIELD-CURINPUT.STARTFIELD+1:1){:1612}{:317};NN:=NN+1;END;
END{:312}ELSE IF NN=EQTB[13222].INT THEN BEGIN PRINTNL(278);NN:=NN+1;
END;IF BOTTOMLINE THEN GOTO 30;BASEPTR:=BASEPTR-1;END;
30:CURINPUT:=INPUTSTACK[INPUTPTR];{1606:}
IF DIAGQUAL THEN WRITE(DIAGFILE,'      message "%TEX-E-TEXERROR, ');
WHILE NOT EOF(TEMPFILE)DO BEGIN IF DIAGQUAL THEN WRITE(DIAGFILE,TEMPFILE
^);GET(TEMPFILE)END;IF DIAGQUAL THEN WRITELN(DIAGFILE,'"');
IF DIAGQUAL THEN WRITELN(DIAGFILE,'  end diagnostic'){:1606};END;{:311}
{323:}PROCEDURE BEGINTOKENLIST(P:HALFWORD;T:QUARTERWORD);
BEGIN BEGIN IF INPUTPTR>MAXINSTACK THEN BEGIN MAXINSTACK:=INPUTPTR;
IF INPUTPTR=STACKSIZE THEN OVERFLOW(602,STACKSIZE);END;
INPUTSTACK[INPUTPTR]:=CURINPUT;INPUTPTR:=INPUTPTR+1;END;
CURINPUT.STATEFIELD:=0;CURINPUT.STARTFIELD:=P;CURINPUT.INDEXFIELD:=T;
IF T>=5 THEN BEGIN MEM[P].HH.LH:=MEM[P].HH.LH+1;
IF T=5 THEN CURINPUT.LIMITFIELD:=PARAMPTR ELSE BEGIN CURINPUT.LOCFIELD:=
MEM[P].HH.RH;IF EQTB[13198].INT>1 THEN BEGIN BEGINDIAGNOSTIC;
PRINTNL(339);CASE T OF 15:PRINTESC(354);16:PRINTESC(603);
OTHERWISE PRINTCMDCHR(72,T+11311)END;PRINT(563);TOKENSHOW(P);
ENDDIAGNOSTIC(FALSE);END;END;END ELSE CURINPUT.LOCFIELD:=P;END;{:323}
{324:}PROCEDURE ENDTOKENLIST;
BEGIN IF CURINPUT.INDEXFIELD>=3 THEN BEGIN IF CURINPUT.INDEXFIELD<=4
THEN FLUSHLIST(CURINPUT.STARTFIELD)ELSE BEGIN DELETETOKENREF(CURINPUT.
STARTFIELD);
IF CURINPUT.INDEXFIELD=5 THEN WHILE PARAMPTR>CURINPUT.LIMITFIELD DO
BEGIN PARAMPTR:=PARAMPTR-1;FLUSHLIST(PARAMSTACK[PARAMPTR]);END;END;
END ELSE IF CURINPUT.INDEXFIELD=1 THEN IF ALIGNSTATE>500000 THEN
ALIGNSTATE:=0 ELSE FATALERROR(604);BEGIN INPUTPTR:=INPUTPTR-1;
CURINPUT:=INPUTSTACK[INPUTPTR];END;
BEGIN IF INTERRUPT<>0 THEN PAUSEFORINSTRUCTIONS;END;END;{:324}{325:}
PROCEDURE BACKINPUT;VAR P:HALFWORD;
BEGIN WHILE(CURINPUT.STATEFIELD=0)AND(CURINPUT.LOCFIELD=0)DO
ENDTOKENLIST;P:=GETAVAIL;MEM[P].HH.LH:=CURTOK;
IF CURTOK<768 THEN IF CURTOK<512 THEN ALIGNSTATE:=ALIGNSTATE-1 ELSE
ALIGNSTATE:=ALIGNSTATE+1;
BEGIN IF INPUTPTR>MAXINSTACK THEN BEGIN MAXINSTACK:=INPUTPTR;
IF INPUTPTR=STACKSIZE THEN OVERFLOW(602,STACKSIZE);END;
INPUTSTACK[INPUTPTR]:=CURINPUT;INPUTPTR:=INPUTPTR+1;END;
CURINPUT.STATEFIELD:=0;CURINPUT.STARTFIELD:=P;CURINPUT.INDEXFIELD:=3;
CURINPUT.LOCFIELD:=P;END;{:325}{327:}PROCEDURE BACKERROR;
BEGIN OKTOINTERRUPT:=FALSE;BACKINPUT;OKTOINTERRUPT:=TRUE;ERROR;END;
PROCEDURE INSERROR;BEGIN OKTOINTERRUPT:=FALSE;BACKINPUT;
CURINPUT.INDEXFIELD:=4;OKTOINTERRUPT:=TRUE;ERROR;END;{:327}{328:}
PROCEDURE BEGINFILEREADING;
BEGIN IF INOPEN=MAXINOPEN THEN OVERFLOW(605,MAXINOPEN);
IF FIRST=BUFSIZE THEN OVERFLOW(257,BUFSIZE);INOPEN:=INOPEN+1;
BEGIN IF INPUTPTR>MAXINSTACK THEN BEGIN MAXINSTACK:=INPUTPTR;
IF INPUTPTR=STACKSIZE THEN OVERFLOW(602,STACKSIZE);END;
INPUTSTACK[INPUTPTR]:=CURINPUT;INPUTPTR:=INPUTPTR+1;END;
CURINPUT.INDEXFIELD:=INOPEN;EOFSEEN[CURINPUT.INDEXFIELD]:=FALSE;
GRPSTACK[CURINPUT.INDEXFIELD]:=CURBOUNDARY;
IFSTACK[CURINPUT.INDEXFIELD]:=CONDPTR;
LINESTACK[CURINPUT.INDEXFIELD]:=LINE;CURINPUT.STARTFIELD:=FIRST;
CURINPUT.STATEFIELD:=1;CURINPUT.NAMEFIELD:=0;END;{:328}{329:}
PROCEDURE ENDFILEREADING;BEGIN FIRST:=CURINPUT.STARTFIELD;
LINE:=LINESTACK[CURINPUT.INDEXFIELD];
IF(CURINPUT.NAMEFIELD=18)OR(CURINPUT.NAMEFIELD=19)THEN PSEUDOCLOSE ELSE
IF CURINPUT.NAMEFIELD>17 THEN ACLOSE(INPUTFILE[CURINPUT.INDEXFIELD]);
BEGIN INPUTPTR:=INPUTPTR-1;CURINPUT:=INPUTSTACK[INPUTPTR];END;
INOPEN:=INOPEN-1;END;{:329}{330:}PROCEDURE CLEARFORERRORPROMPT;
BEGIN WHILE(CURINPUT.STATEFIELD<>0)AND(CURINPUT.NAMEFIELD=0)AND(INPUTPTR
>0)AND(CURINPUT.LOCFIELD>CURINPUT.LIMITFIELD)DO ENDFILEREADING;PRINTLN;
INRAB^.RAB$V_PTA:=TRUE;END;{:330}{336:}PROCEDURE CHECKOUTERVALIDITY;
VAR P:HALFWORD;Q:HALFWORD;
BEGIN IF SCANNERSTATUS<>0 THEN BEGIN DELETIONSALLOWED:=FALSE;{337:}
IF CURCS<>0 THEN BEGIN IF(CURINPUT.STATEFIELD=0)OR(CURINPUT.NAMEFIELD<1)
OR(CURINPUT.NAMEFIELD>17)THEN BEGIN P:=GETAVAIL;
MEM[P].HH.LH:=4095+CURCS;BEGINTOKENLIST(P,3);END;CURCMD:=10;CURCHR:=32;
END{:337};IF SCANNERSTATUS>1 THEN{338:}BEGIN RUNAWAY;
IF CURCS=0 THEN BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);
COPYERR:=SAVEIT;REWRITE(TEMPFILE);PRINT(613);END ELSE BEGIN CURCS:=0;
BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);COPYERR:=SAVEIT;
REWRITE(TEMPFILE);PRINT(614);END;END;PRINT(615);{339:}P:=GETAVAIL;
CASE SCANNERSTATUS OF 2:BEGIN PRINT(578);MEM[P].HH.LH:=637;END;
3:BEGIN PRINT(621);MEM[P].HH.LH:=PARTOKEN;LONGSTATE:=113;END;
4:BEGIN PRINT(580);MEM[P].HH.LH:=637;Q:=P;P:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[P].HH.LH:=14610;ALIGNSTATE:=-1000000;END;5:BEGIN PRINT(581);
MEM[P].HH.LH:=637;END;END;BEGINTOKENLIST(P,4){:339};PRINT(616);
SPRINTCS(WARNINGINDEX);BEGIN HELPPTR:=4;HELPLINE[3]:=617;
HELPLINE[2]:=618;HELPLINE[1]:=619;HELPLINE[0]:=620;END;ERROR;END{:338}
ELSE BEGIN BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);
COPYERR:=SAVEIT;REWRITE(TEMPFILE);PRINT(607);END;PRINTCMDCHR(105,CURIF);
PRINT(608);PRINTINT(SKIPLINE);BEGIN HELPPTR:=3;HELPLINE[2]:=609;
HELPLINE[1]:=610;HELPLINE[0]:=611;END;
IF CURCS<>0 THEN CURCS:=0 ELSE HELPLINE[2]:=612;CURTOK:=14613;INSERROR;
END;DELETIONSALLOWED:=TRUE;END;END;{:336}{340:}PROCEDURE FIRMUPTHELINE;
FORWARD;{:340}{341:}PROCEDURE GETNEXT;LABEL 20,25,21,26,40,10;
VAR K:0..BUFSIZE;T:HALFWORD;CAT:0..15;C,CC:ASCIICODE;D:2..3;
BEGIN 20:CURCS:=0;IF CURINPUT.STATEFIELD<>0 THEN{343:}
BEGIN 25:IF CURINPUT.LOCFIELD<=CURINPUT.LIMITFIELD THEN BEGIN CURCHR:=
BUFFER[CURINPUT.LOCFIELD];CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
21:CURCMD:=EQTB[11888+CURCHR].HH.RH;{344:}
CASE CURINPUT.STATEFIELD+CURCMD OF{345:}10,26,42,27,43{:345}:GOTO 25;
1,17,33:{354:}
BEGIN IF CURINPUT.LOCFIELD>CURINPUT.LIMITFIELD THEN CURCS:=513 ELSE
BEGIN 26:K:=CURINPUT.LOCFIELD;CURCHR:=BUFFER[K];
CAT:=EQTB[11888+CURCHR].HH.RH;K:=K+1;
IF CAT=11 THEN CURINPUT.STATEFIELD:=17 ELSE IF CAT=10 THEN CURINPUT.
STATEFIELD:=17 ELSE CURINPUT.STATEFIELD:=1;
IF(CAT=11)AND(K<=CURINPUT.LIMITFIELD)THEN{356:}
BEGIN REPEAT CURCHR:=BUFFER[K];CAT:=EQTB[11888+CURCHR].HH.RH;K:=K+1;
UNTIL(CAT<>11)OR(K>CURINPUT.LIMITFIELD);{355:}
BEGIN IF BUFFER[K]=CURCHR THEN IF CAT=7 THEN IF K<CURINPUT.LIMITFIELD
THEN BEGIN C:=BUFFER[K+1];IF C<128 THEN BEGIN D:=2;
IF(((C>=48)AND(C<=57))OR((C>=97)AND(C<=102)))THEN IF K+2<=CURINPUT.
LIMITFIELD THEN BEGIN CC:=BUFFER[K+2];
IF(((CC>=48)AND(CC<=57))OR((CC>=97)AND(CC<=102)))THEN D:=D+1;END;
IF D>2 THEN BEGIN IF C<=57 THEN CURCHR:=C-48 ELSE CURCHR:=C-87;
IF CC<=57 THEN CURCHR:=16*CURCHR+CC-48 ELSE CURCHR:=16*CURCHR+CC-87;
BUFFER[K-1]:=CURCHR;
END ELSE IF C<64 THEN BUFFER[K-1]:=C+64 ELSE BUFFER[K-1]:=C-64;
CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD-D;FIRST:=FIRST-D;
WHILE K<=CURINPUT.LIMITFIELD DO BEGIN BUFFER[K]:=BUFFER[K+D];K:=K+1;END;
GOTO 26;END;END;END{:355};IF CAT<>11 THEN K:=K-1;
IF K>CURINPUT.LOCFIELD+1 THEN BEGIN CURCS:=IDLOOKUP(CURINPUT.LOCFIELD,K-
CURINPUT.LOCFIELD);CURINPUT.LOCFIELD:=K;GOTO 40;END;END{:356}ELSE{355:}
BEGIN IF BUFFER[K]=CURCHR THEN IF CAT=7 THEN IF K<CURINPUT.LIMITFIELD
THEN BEGIN C:=BUFFER[K+1];IF C<128 THEN BEGIN D:=2;
IF(((C>=48)AND(C<=57))OR((C>=97)AND(C<=102)))THEN IF K+2<=CURINPUT.
LIMITFIELD THEN BEGIN CC:=BUFFER[K+2];
IF(((CC>=48)AND(CC<=57))OR((CC>=97)AND(CC<=102)))THEN D:=D+1;END;
IF D>2 THEN BEGIN IF C<=57 THEN CURCHR:=C-48 ELSE CURCHR:=C-87;
IF CC<=57 THEN CURCHR:=16*CURCHR+CC-48 ELSE CURCHR:=16*CURCHR+CC-87;
BUFFER[K-1]:=CURCHR;
END ELSE IF C<64 THEN BUFFER[K-1]:=C+64 ELSE BUFFER[K-1]:=C-64;
CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD-D;FIRST:=FIRST-D;
WHILE K<=CURINPUT.LIMITFIELD DO BEGIN BUFFER[K]:=BUFFER[K+D];K:=K+1;END;
GOTO 26;END;END;END{:355};CURCS:=257+BUFFER[CURINPUT.LOCFIELD];
CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;END;40:CURCMD:=EQTB[CURCS].HH.B0;
CURCHR:=EQTB[CURCS].HH.RH;IF CURCMD>=113 THEN CHECKOUTERVALIDITY;
END{:354};14,30,46:{353:}BEGIN CURCS:=CURCHR+1;
CURCMD:=EQTB[CURCS].HH.B0;CURCHR:=EQTB[CURCS].HH.RH;
CURINPUT.STATEFIELD:=1;IF CURCMD>=113 THEN CHECKOUTERVALIDITY;END{:353};
8,24,40:{352:}
BEGIN IF CURCHR=BUFFER[CURINPUT.LOCFIELD]THEN IF CURINPUT.LOCFIELD<
CURINPUT.LIMITFIELD THEN BEGIN C:=BUFFER[CURINPUT.LOCFIELD+1];
IF C<128 THEN BEGIN CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+2;
IF(((C>=48)AND(C<=57))OR((C>=97)AND(C<=102)))THEN IF CURINPUT.LOCFIELD<=
CURINPUT.LIMITFIELD THEN BEGIN CC:=BUFFER[CURINPUT.LOCFIELD];
IF(((CC>=48)AND(CC<=57))OR((CC>=97)AND(CC<=102)))THEN BEGIN CURINPUT.
LOCFIELD:=CURINPUT.LOCFIELD+1;
IF C<=57 THEN CURCHR:=C-48 ELSE CURCHR:=C-87;
IF CC<=57 THEN CURCHR:=16*CURCHR+CC-48 ELSE CURCHR:=16*CURCHR+CC-87;
GOTO 21;END;END;IF C<64 THEN CURCHR:=C+64 ELSE CURCHR:=C-64;GOTO 21;END;
END;CURINPUT.STATEFIELD:=1;END{:352};16,32,48:{346:}
BEGIN BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);
COPYERR:=SAVEIT;REWRITE(TEMPFILE);PRINT(622);END;BEGIN HELPPTR:=2;
HELPLINE[1]:=623;HELPLINE[0]:=624;END;DELETIONSALLOWED:=FALSE;ERROR;
DELETIONSALLOWED:=TRUE;GOTO 20;END{:346};{347:}11:{349:}
BEGIN CURINPUT.STATEFIELD:=17;CURCHR:=32;END{:349};6:{348:}
BEGIN CURINPUT.LOCFIELD:=CURINPUT.LIMITFIELD+1;CURCMD:=10;CURCHR:=32;
END{:348};22,15,31,47:{350:}
BEGIN CURINPUT.LOCFIELD:=CURINPUT.LIMITFIELD+1;GOTO 25;END{:350};
38:{351:}BEGIN CURINPUT.LOCFIELD:=CURINPUT.LIMITFIELD+1;CURCS:=PARLOC;
CURCMD:=EQTB[CURCS].HH.B0;CURCHR:=EQTB[CURCS].HH.RH;
IF CURCMD>=113 THEN CHECKOUTERVALIDITY;END{:351};
2:ALIGNSTATE:=ALIGNSTATE+1;18,34:BEGIN CURINPUT.STATEFIELD:=1;
ALIGNSTATE:=ALIGNSTATE+1;END;3:ALIGNSTATE:=ALIGNSTATE-1;
19,35:BEGIN CURINPUT.STATEFIELD:=1;ALIGNSTATE:=ALIGNSTATE-1;END;
20,21,23,25,28,29,36,37,39,41,44,45:CURINPUT.STATEFIELD:=1;{:347}
OTHERWISE END{:344};END ELSE BEGIN CURINPUT.STATEFIELD:=33;{360:}
IF CURINPUT.NAMEFIELD>17 THEN{362:}BEGIN LINE:=LINE+1;
FIRST:=CURINPUT.STARTFIELD;
IF NOT FORCEEOF THEN IF CURINPUT.NAMEFIELD<=19 THEN BEGIN IF PSEUDOINPUT
THEN FIRMUPTHELINE ELSE IF(EQTB[11325].HH.RH<>0)AND NOT EOFSEEN[CURINPUT
.INDEXFIELD]THEN BEGIN CURINPUT.LIMITFIELD:=FIRST-1;
EOFSEEN[CURINPUT.INDEXFIELD]:=TRUE;BEGINTOKENLIST(EQTB[11325].HH.RH,14);
GOTO 20;END ELSE FORCEEOF:=TRUE;
END ELSE BEGIN IF INPUTLN(INPUTFILE[CURINPUT.INDEXFIELD],TRUE)THEN
FIRMUPTHELINE ELSE IF(EQTB[11325].HH.RH<>0)AND NOT EOFSEEN[CURINPUT.
INDEXFIELD]THEN BEGIN CURINPUT.LIMITFIELD:=FIRST-1;
EOFSEEN[CURINPUT.INDEXFIELD]:=TRUE;BEGINTOKENLIST(EQTB[11325].HH.RH,14);
GOTO 20;END ELSE FORCEEOF:=TRUE;END;
IF FORCEEOF THEN BEGIN IF EQTB[13227].INT>0 THEN IF(GRPSTACK[INOPEN]<>
CURBOUNDARY)OR(IFSTACK[INOPEN]<>CONDPTR)THEN FILEWARNING;
IF CURINPUT.NAMEFIELD>=19 THEN BEGIN PRINTCHAR(41);
OPENPARENS:=OPENPARENS-1;IF ODD(SELECTOR)THEN WRITELN(TERMOUT);END;
FORCEEOF:=FALSE;ENDFILEREADING;CHECKOUTERVALIDITY;GOTO 20;END;
IF(EQTB[13216].INT<0)OR(EQTB[13216].INT>255)THEN CURINPUT.LIMITFIELD:=
CURINPUT.LIMITFIELD-1 ELSE BUFFER[CURINPUT.LIMITFIELD]:=EQTB[13216].INT;
FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
END{:362}ELSE BEGIN IF NOT(CURINPUT.NAMEFIELD=0)THEN BEGIN CURCMD:=0;
CURCHR:=0;GOTO 10;END;IF INPUTPTR>0 THEN BEGIN ENDFILEREADING;GOTO 20;
END;IF SELECTOR<18 THEN OPENLOGFILE;
IF INTERACTION>1 THEN BEGIN IF(EQTB[13216].INT<0)OR(EQTB[13216].INT>255)
THEN CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD+1;
IF CURINPUT.LIMITFIELD=CURINPUT.STARTFIELD THEN PRINTNL(625);PRINTLN;
FIRST:=CURINPUT.STARTFIELD;BEGIN WAKEUPTERMINAL;PRINT(42);TERMINPUT;END;
CURINPUT.LIMITFIELD:=LAST;
IF(EQTB[13216].INT<0)OR(EQTB[13216].INT>255)THEN CURINPUT.LIMITFIELD:=
CURINPUT.LIMITFIELD-1 ELSE BUFFER[CURINPUT.LIMITFIELD]:=EQTB[13216].INT;
FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
END ELSE FATALERROR(626);END{:360};
BEGIN IF INTERRUPT<>0 THEN PAUSEFORINSTRUCTIONS;END;GOTO 25;END;
END{:343}ELSE{357:}
IF CURINPUT.LOCFIELD<>0 THEN BEGIN T:=MEM[CURINPUT.LOCFIELD].HH.LH;
CURINPUT.LOCFIELD:=MEM[CURINPUT.LOCFIELD].HH.RH;
IF T>=4095 THEN BEGIN CURCS:=T-4095;CURCMD:=EQTB[CURCS].HH.B0;
CURCHR:=EQTB[CURCS].HH.RH;IF CURCMD>=113 THEN IF CURCMD=116 THEN{358:}
BEGIN CURCS:=MEM[CURINPUT.LOCFIELD].HH.LH-4095;CURINPUT.LOCFIELD:=0;
CURCMD:=EQTB[CURCS].HH.B0;CURCHR:=EQTB[CURCS].HH.RH;
IF CURCMD>100 THEN BEGIN CURCMD:=0;CURCHR:=257;END;END{:358}
ELSE CHECKOUTERVALIDITY;END ELSE BEGIN CURCMD:=T DIV 256;
CURCHR:=T MOD 256;CASE CURCMD OF 1:ALIGNSTATE:=ALIGNSTATE+1;
2:ALIGNSTATE:=ALIGNSTATE-1;5:{359:}
BEGIN BEGINTOKENLIST(PARAMSTACK[CURINPUT.LIMITFIELD+CURCHR-1],0);
GOTO 20;END{:359};OTHERWISE END;END;END ELSE BEGIN ENDTOKENLIST;GOTO 20;
END{:357};{342:}
IF CURCMD<=5 THEN IF CURCMD>=4 THEN IF ALIGNSTATE=0 THEN{789:}
BEGIN IF SCANNERSTATUS=4 THEN FATALERROR(604);
CURCMD:=MEM[CURALIGN+5].HH.LH;MEM[CURALIGN+5].HH.LH:=CURCHR;
IF CURCMD=63 THEN BEGINTOKENLIST(327134,2)ELSE BEGINTOKENLIST(MEM[
CURALIGN+2].INT,2);ALIGNSTATE:=1000000;GOTO 20;END{:789}{:342};10:END;
{:341}{363:}PROCEDURE FIRMUPTHELINE;VAR K:0..BUFSIZE;
BEGIN CURINPUT.LIMITFIELD:=LAST;
IF EQTB[13196].INT>0 THEN IF INTERACTION>1 THEN BEGIN WAKEUPTERMINAL;
PRINTLN;IF CURINPUT.STARTFIELD<CURINPUT.LIMITFIELD THEN FOR K:=CURINPUT.
STARTFIELD TO CURINPUT.LIMITFIELD-1 DO PRINT(BUFFER[K]);
FIRST:=CURINPUT.LIMITFIELD;BEGIN WAKEUPTERMINAL;PRINT(627);TERMINPUT;
END;
IF LAST>FIRST THEN BEGIN FOR K:=FIRST TO LAST-1 DO BUFFER[K+CURINPUT.
STARTFIELD-FIRST]:=BUFFER[K];
CURINPUT.LIMITFIELD:=CURINPUT.STARTFIELD+LAST-FIRST;END;END;END;{:363}
{365:}PROCEDURE GETTOKEN;BEGIN NONEWCONTROLSEQUENCE:=FALSE;GETNEXT;
NONEWCONTROLSEQUENCE:=TRUE;
IF CURCS=0 THEN CURTOK:=(CURCMD*256)+CURCHR ELSE CURTOK:=4095+CURCS;END;
{:365}{366:}{389:}PROCEDURE MACROCALL;LABEL 10,22,30,31,40;
VAR R:HALFWORD;P:HALFWORD;Q:HALFWORD;S:HALFWORD;T:HALFWORD;U,V:HALFWORD;
RBRACEPTR:HALFWORD;N:SMALLNUMBER;UNBALANCE:HALFWORD;M:HALFWORD;
REFCOUNT:HALFWORD;SAVESCANNERSTATUS:SMALLNUMBER;
SAVEWARNINGINDEX:HALFWORD;MATCHCHR:ASCIICODE;
BEGIN SAVESCANNERSTATUS:=SCANNERSTATUS;SAVEWARNINGINDEX:=WARNINGINDEX;
WARNINGINDEX:=CURCS;REFCOUNT:=CURCHR;R:=MEM[REFCOUNT].HH.RH;N:=0;
IF EQTB[13198].INT>0 THEN{401:}BEGIN BEGINDIAGNOSTIC;PRINTLN;
PRINTCS(WARNINGINDEX);TOKENSHOW(REFCOUNT);ENDDIAGNOSTIC(FALSE);END{:401}
;IF MEM[R].HH.LH=3585 THEN R:=MEM[R].HH.RH;
IF MEM[R].HH.LH<>3584 THEN{391:}BEGIN SCANNERSTATUS:=3;UNBALANCE:=0;
LONGSTATE:=EQTB[CURCS].HH.B0;
IF LONGSTATE>=113 THEN LONGSTATE:=LONGSTATE-2;
REPEAT MEM[327141].HH.RH:=0;
IF(MEM[R].HH.LH>3583)OR(MEM[R].HH.LH<3328)THEN S:=0 ELSE BEGIN MATCHCHR
:=MEM[R].HH.LH-3328;S:=MEM[R].HH.RH;R:=S;P:=327141;M:=0;END;{392:}
22:GETTOKEN;IF CURTOK=MEM[R].HH.LH THEN{394:}BEGIN R:=MEM[R].HH.RH;
IF(MEM[R].HH.LH>=3328)AND(MEM[R].HH.LH<=3584)THEN BEGIN IF CURTOK<512
THEN ALIGNSTATE:=ALIGNSTATE-1;GOTO 40;END ELSE GOTO 22;END{:394};{397:}
IF S<>R THEN IF S=0 THEN{398:}
BEGIN BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);
COPYERR:=SAVEIT;REWRITE(TEMPFILE);PRINT(659);END;SPRINTCS(WARNINGINDEX);
PRINT(660);BEGIN HELPPTR:=4;HELPLINE[3]:=661;HELPLINE[2]:=662;
HELPLINE[1]:=663;HELPLINE[0]:=664;END;ERROR;GOTO 10;END{:398}
ELSE BEGIN T:=S;REPEAT BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=MEM[T].HH.LH;P:=Q;END;M:=M+1;U:=MEM[T].HH.RH;V:=S;
WHILE TRUE DO BEGIN IF U=R THEN IF CURTOK<>MEM[V].HH.LH THEN GOTO 30
ELSE BEGIN R:=MEM[V].HH.RH;GOTO 22;END;
IF MEM[U].HH.LH<>MEM[V].HH.LH THEN GOTO 30;U:=MEM[U].HH.RH;
V:=MEM[V].HH.RH;END;30:T:=MEM[T].HH.RH;UNTIL T=R;R:=S;END{:397};
IF CURTOK=PARTOKEN THEN IF LONGSTATE<>112 THEN{396:}
BEGIN IF LONGSTATE=111 THEN BEGIN RUNAWAY;
BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);COPYERR:=SAVEIT;
REWRITE(TEMPFILE);PRINT(654);END;SPRINTCS(WARNINGINDEX);PRINT(655);
BEGIN HELPPTR:=3;HELPLINE[2]:=656;HELPLINE[1]:=657;HELPLINE[0]:=658;END;
BACKERROR;END;PSTACK[N]:=MEM[327141].HH.RH;
ALIGNSTATE:=ALIGNSTATE-UNBALANCE;FOR M:=0 TO N DO FLUSHLIST(PSTACK[M]);
GOTO 10;END{:396};IF CURTOK<768 THEN IF CURTOK<512 THEN{399:}
BEGIN UNBALANCE:=1;WHILE TRUE DO BEGIN BEGIN BEGIN Q:=AVAIL;
IF Q=0 THEN Q:=GETAVAIL ELSE BEGIN AVAIL:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;
DYNUSED:=DYNUSED+1;END;END;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;P:=Q;
END;GETTOKEN;IF CURTOK=PARTOKEN THEN IF LONGSTATE<>112 THEN{396:}
BEGIN IF LONGSTATE=111 THEN BEGIN RUNAWAY;
BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);COPYERR:=SAVEIT;
REWRITE(TEMPFILE);PRINT(654);END;SPRINTCS(WARNINGINDEX);PRINT(655);
BEGIN HELPPTR:=3;HELPLINE[2]:=656;HELPLINE[1]:=657;HELPLINE[0]:=658;END;
BACKERROR;END;PSTACK[N]:=MEM[327141].HH.RH;
ALIGNSTATE:=ALIGNSTATE-UNBALANCE;FOR M:=0 TO N DO FLUSHLIST(PSTACK[M]);
GOTO 10;END{:396};
IF CURTOK<768 THEN IF CURTOK<512 THEN UNBALANCE:=UNBALANCE+1 ELSE BEGIN
UNBALANCE:=UNBALANCE-1;IF UNBALANCE=0 THEN GOTO 31;END;END;
31:RBRACEPTR:=P;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;
P:=Q;END;END{:399}ELSE{395:}BEGIN BACKINPUT;
BEGIN IF INTERACTION=3 THEN WAKEUPTERMINAL;PRINTNL(263);COPYERR:=SAVEIT;
REWRITE(TEMPFILE);PRINT(646);END;SPRINTCS(WARNINGINDEX);PRINT(647);
BEGIN HELPPTR:=6;HELPLINE[5]:=648;HELPLINE[4]:=649;HELPLINE[3]:=650;
HELPLINE[2]:=651;HELPLINE[1]:=652;HELPLINE[0]:=653;END;
ALIGNSTATE:=ALIGNSTATE+1;LONGSTATE:=111;CURTOK:=PARTOKEN;INSERROR;
END{:395}ELSE{393:}
BEGIN IF CURTOK=2592 THEN IF MEM[R].HH.LH<=3584 THEN IF MEM[R].HH.LH>=
3328 THEN GOTO 22;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=CURTOK;P:=Q;END;END{:393};M:=M+1;
IF MEM[R].HH.LH>3584 THEN GOTO 22;IF MEM[R].HH.LH<3328 THEN GOTO 22;
40:IF S<>0 THEN{400:}
BEGIN IF(M=1)AND(MEM[P].HH.LH<768)AND(P<>327141)THEN BEGIN MEM[RBRACEPTR
].HH.RH:=0;BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;DYNUSED:=DYNUSED-1;END;
P:=MEM[327141].HH.RH;PSTACK[N]:=MEM[P].HH.RH;BEGIN MEM[P].HH.RH:=AVAIL;
AVAIL:=P;DYNUSED:=DYNUSED-1;END;END ELSE PSTACK[N]:=MEM[327141].HH.RH;
N:=N+1;IF EQTB[13198].INT>0 THEN BEGIN BEGINDIAGNOSTIC;
PRINTNL(MATCHCHR);PRINTINT(N);PRINT(665);
SHOWTOKENLIST(PSTACK[N-1],0,1000);ENDDIAGNOSTIC(FALSE);END;END{:400}
{:392};UNTIL MEM[R].HH.LH=3584;END{:391};{390:}
WHILE(CURINPUT.STATEFIELD=0)AND(CURINPUT.LOCFIELD=0)DO ENDTOKENLIST;
BEGINTOKENLIST(REFCOUNT,5);CURINPUT.NAMEFIELD:=WARNINGINDEX;
CURINPUT.LOCFIELD:=MEM[R].HH.RH;
IF N>0 THEN BEGIN IF PARAMPTR+N>MAXPARAMSTACK THEN BEGIN MAXPARAMSTACK:=
PARAMPTR+N;IF MAXPARAMSTACK>PARAMSIZE THEN OVERFLOW(645,PARAMSIZE);END;
FOR M:=0 TO N-1 DO PARAMSTACK[PARAMPTR+M]:=PSTACK[M];
PARAMPTR:=PARAMPTR+N;END{:390};10:SCANNERSTATUS:=SAVESCANNERSTATUS;
WARNINGINDEX:=SAVEWARNINGINDEX;END;{:389}{379:}PROCEDURE INSERTRELAX;
BEGIN CURTOK:=4095+CURCS;BACKINPUT;CURTOK:=14616;BACKINPUT;
CURINPUT.INDEXFIELD:=4;END;{:379}{1485:}PROCEDURE PSE