-- file: TexBuildPage3Impl.mesa -- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:38 am PDT DIRECTORY PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexDvi, TexOps, TexParagraph, TexBuildPage, TexMath, TexRest, TexSysdepInline; TexBuildPage3Impl: PROGRAM IMPORTS PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexDvi, TexOps, TexParagraph, TexBuildPage, TexMath, TexRest, TexSysdepInline EXPORTS TexBuildPage = PUBLIC BEGIN OPEN PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexDvi, TexOps, TexParagraph, TexBuildPage, TexMath, TexRest, TexSysdepInline; AppendGlue: PROCEDURE = BEGIN S:SmallNumber; S←CurChr;SELECT S FROM 0 =>CurVal←4;1 =>CurVal←8; 2 =>CurVal←12;3 =>CurVal←16;4 =>ScanGlue[2];5 =>ScanGlue[3]; ENDCASE; BEGIN Mem[CurList.TailField]↑.Hh.Rh←NewGlue[CurVal]; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END; IF INT[S]>=4 THEN BEGIN Mem[CurVal]↑.Hh.Rh← INT[Mem[CurVal]↑.Hh.Rh]-1; IF INT[S]>4 THEN Mem[CurList.TailField]↑.Hh.B1←99; END; END;--:1060----1061: AppendKern: PROCEDURE = BEGIN S:Quarterword; S←CurChr; ScanDimen[S=99,FALSE,FALSE]; BEGIN Mem[CurList.TailField]↑.Hh.Rh←NewKern[CurVal]; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END; Mem[CurList.TailField]↑.Hh.B1←S; END;--:1061----1064:-- OffSave: PROCEDURE = BEGIN P:Halfword; IF CurGroup=0 THEN--1066: BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[636]; END; PrintCmdChr[CurCmd,CurChr];BEGIN HelpPtr←1;HelpLine↑[0]←896; END; Error[]; END--:1066-- ELSE BEGIN BackInput[];P←GetAvail[];Mem[64997]↑.Hh.Rh←P; BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[486]; END;--1065: SELECT CurGroup FROM 14 =>BEGIN Mem[P]↑.Hh.Lh←6856;PrintEsc[378]; END; 15 =>BEGIN Mem[P]↑.Hh.Lh←804;PrintChar[36]; END; 16 =>BEGIN Mem[P]↑.Hh.Lh←6857;Mem[P]↑.Hh.Rh←GetAvail[];P←Mem[P]↑.Hh.Rh; Mem[P]↑.Hh.Lh←3118;PrintEsc[895]; END; ENDCASE =>BEGIN Mem[P]↑.Hh.Lh←637; PrintChar[125]; END --:1065--;Print[487]; BeginTokenList[Mem[64997]↑.Hh.Rh,4];BEGIN HelpPtr←5; HelpLine↑[4]←890;HelpLine↑[3]←891;HelpLine↑[2]←892;HelpLine↑[1]←893; HelpLine↑[0]←894; END;Error[]; END; END;--:1064----1069: ExtraRightBrace: PROCEDURE = BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[901]; END;SELECT CurGroup FROM 14 =>PrintEsc[378]; 15 =>PrintChar[36];16 =>PrintEsc[735]; ENDCASE;BEGIN HelpPtr←5; HelpLine↑[4]←902;HelpLine↑[3]←903;HelpLine↑[2]←904;HelpLine↑[1]←905; HelpLine↑[0]←906; END;Error[];AlignState←AlignState+1; END;--:1069 --1070:-- NormalParagraph: PROCEDURE = BEGIN IF Eqtb↑[4786].Int#0 THEN EqWordDefine[4786,0]; IF Eqtb↑[5218].Int#0 THEN EqWordDefine[5218,0]; IF Eqtb↑[4808].Int#1 THEN EqWordDefine[4808,1]; IF Eqtb↑[3556].Hh.Rh#0 THEN EqDefine[3556,117,0]; END;--:1070----1075: BoxEnd: PROCEDURE = BEGIN P:Halfword; IF SaveStack↑[SavePtr+0].Int<1073741824 THEN--1076: BEGIN IF CurBox#0 THEN BEGIN Mem[CurBox+4]↑.Int←SaveStack↑[SavePtr+0 ].Int;IF ABS[CurList.ModeField]=1 THEN BEGIN AppendToVlist[CurBox]; IF AdjustTail#0 THEN BEGIN IF 64995#AdjustTail THEN BEGIN Mem[ CurList.TailField]↑.Hh.Rh←Mem[64995]↑.Hh.Rh; CurList.TailField←AdjustTail; END;AdjustTail←0; END; IF INT[CurList.ModeField]>0 THEN BuildPage[]; END ELSE BEGIN IF ABS[CurList.ModeField]=101 THEN CurList.AuxField← 1000 ELSE BEGIN P←NewNoad[];Mem[P+1]↑.Hh.Rh←2;Mem[P+1]↑.Hh.Lh←CurBox; CurBox←P; END;Mem[CurList.TailField]↑.Hh.Rh←CurBox; CurList.TailField←CurBox; END; END; END--:1076 ELSE IF SaveStack↑[SavePtr+0].Int<1073742336 THEN--1077: IF SaveStack↑[SavePtr+0].Int<1073742080 THEN EqDefine[ -1073738002+SaveStack↑[SavePtr+0].Int,118,CurBox] ELSE GeqDefine[ -1073738258+SaveStack↑[SavePtr+0].Int,118,CurBox]--:1077 ELSE IF CurBox#0 THEN IF SaveStack↑[SavePtr+0].Int>1073742336 THEN-- -- 1078:--BEGIN--404:--DO GetXToken[]; IF(CurCmd#10)AND (CurCmd#0)--:404-- THEN EXIT; ENDLOOP; IF((CurCmd=26)AND (ABS[CurList.ModeField]#1))OR ((CurCmd=27)AND ( ABS[CurList.ModeField]=1))OR ((CurCmd=28)AND (ABS[CurList.ModeField]=201) ) THEN BEGIN AppendGlue[]; Mem[CurList.TailField]↑.Hh.B1←SaveStack↑[SavePtr+0].Int-(1073742237); Mem[CurList.TailField+1]↑.Hh.Rh←CurBox; END ELSE BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[919]; END; BEGIN HelpPtr←3;HelpLine↑[2]←920;HelpLine↑[1]←921;HelpLine↑[0]←922; END;BackError[];FlushNodeList[CurBox]; END; END--:1078 ELSE ShipOut[CurBox]; END;--:1075----1079:-- BeginBox: PROCEDURE = BEGIN P:Halfword;K:Halfword;N:EightBits; {SELECT CurChr FROM 0 =>BEGIN ScanEightBitInt[]; CurBox←Eqtb↑[3822+CurVal].Hh.Rh;Eqtb↑[3822+CurVal].Hh.Rh←0; END; 1 =>BEGIN ScanEightBitInt[]; CurBox←CopyNodeList[Eqtb↑[3822+CurVal].Hh.Rh]; END;2 =>--1080: BEGIN CurBox←0;IF ABS[CurList.ModeField]=201 THEN BEGIN YouCant[]; BEGIN HelpPtr←1;HelpLine↑[0]←923; END;Error[]; END ELSE IF(CurList.ModeField=1)AND (CurList.HeadField=CurList. TailField) THEN--1081:--BEGIN YouCant[];BEGIN HelpPtr←2; HelpLine↑[1]←924;HelpLine↑[0]←925; END;Error[]; END--:1081 ELSE BEGIN IF NOT ( INT[CurList.TailField]>=HiMemMin) THEN IF(Mem[CurList. TailField]↑.Hh.B0=0)OR (Mem[CurList.TailField]↑.Hh.B0=1) THEN BEGIN P← CurList.HeadField;CurBox←CurList.TailField;Mem[CurBox+4]↑.Int←0; WHILE Mem[P]↑.Hh.Rh#CurList.TailField DO P←Mem[P]↑.Hh.Rh ENDLOOP ; CurList.TailField←P;Mem[P]↑.Hh.Rh←0; END; END; END--:1080--;3 =>--1082: BEGIN ScanEightBitInt[];N←CurVal; IF NOT ScanKeyword[700] THEN BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[926]; END;BEGIN HelpPtr←2;HelpLine↑[1]←927; HelpLine↑[0]←928; END;Error[]; END;ScanDimen[FALSE,FALSE,FALSE]; CurBox←Vsplit[N,CurVal]; END--:1082--; ENDCASE =>--1083:--BEGIN K← INT[CurChr]-4; SavePtr←SavePtr+1;ScanSpec[]; IF K=101 THEN IF(SaveStack↑[SavePtr-3].Int<1073741824)AND (ABS[CurList. ModeField]=1) THEN NewSaveLevel[3] ELSE NewSaveLevel[2] ELSE BEGIN IF K=1 THEN NewSaveLevel[4] ELSE BEGIN NewSaveLevel[5];K←1; END; NormalParagraph[]; END;PushNest[];CurList.ModeField←- INT[K]; IF K=1 THEN BEGIN CurList.AuxField←-65536000; IF Eqtb↑[3562].Hh.Rh#0 THEN BeginTokenList[Eqtb↑[3562].Hh.Rh,11]; END ELSE BEGIN CurList.AuxField←1000; IF Eqtb↑[3561].Hh.Rh#0 THEN BeginTokenList[Eqtb↑[3561].Hh.Rh,10]; END; GOTO Label10; END--:1083--;BoxEnd[];EXITS Label10 => NULL}; END;--:1079----1084:-- ScanBox: PROCEDURE = BEGIN--404:--DO GetXToken[]; IF(CurCmd#10)AND (CurCmd#0)--:404-- THEN EXIT; ENDLOOP; IF CurCmd=20 THEN BeginBox [] ELSE IF( SaveStack↑[SavePtr+0].Int>=1073742337)AND ((CurCmd=36)OR (CurCmd=35)) THEN BEGIN CurBox← ScanRuleSpec[];BoxEnd[]; END ELSE BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[929]; END;BEGIN HelpPtr←3;HelpLine↑[2]←930; HelpLine↑[1]←931;HelpLine↑[0]←932; END;BackError[]; END; END;--:1084 --1086:-- Package: PROCEDURE[C: SmallNumber] = BEGIN H:Scaled;P:Halfword; D:Scaled; D←Eqtb↑[5208].Int;Unsave[];SavePtr←SavePtr-3; IF CurList.ModeField=-101 THEN CurBox←Hpack[Mem[CurList.HeadField]↑ .Hh.Rh,SaveStack↑[SavePtr+2].Int,SaveStack↑[SavePtr+1].Int] ELSE BEGIN CurBox←Vpackage[Mem[CurList.HeadField]↑.Hh.Rh,SaveStack↑[SavePtr+2]. Int,SaveStack↑[SavePtr+1].Int,D];IF C=4 THEN--1087:--BEGIN H←0; P←Mem[CurBox+5]↑.Hh.Rh; IF P#0 THEN IF INT[Mem[P]↑.Hh.B0]<=2 THEN H←Mem[P+3]↑.Int; Mem[CurBox+2]↑.Int←Mem[CurBox+2]↑.Int-H+Mem[CurBox+3]↑.Int; Mem[CurBox+3]↑.Int←H; END--:1087--; END;PopNest[];BoxEnd[]; END;--:1086----1091: NewGraf: PROCEDURE[Indented: PascalBoolean] = BEGIN CurList.PgField←0; IF(CurList.ModeField=1)OR (CurList.HeadField#CurList.TailField) THEN BEGIN Mem[CurList.TailField]↑.Hh.Rh←NewParamGlue[2]; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END;PushNest[]; CurList.ModeField←101;CurList.AuxField←1000; IF Indented THEN BEGIN CurList.TailField←NewNullBox[]; Mem[CurList.HeadField]↑.Hh.Rh←CurList.TailField; Mem[CurList.TailField+1]↑.Int←Eqtb↑[5201].Int; END; IF Eqtb↑[3558].Hh.Rh#0 THEN BeginTokenList[Eqtb↑[3558].Hh.Rh,7]; IF NestPtr=1 THEN BuildPage[]; END;--:1091----1093: IndentInHmode: PROCEDURE = BEGIN P, Q:Halfword; IF INT[CurChr]>0 THEN BEGIN P←NewNullBox[]; Mem[P+1]↑.Int←Eqtb↑[5201].Int; IF ABS[CurList.ModeField]=101 THEN CurList.AuxField←1000 ELSE BEGIN Q←NewNoad[];Mem[Q+1]↑.Hh.Rh←2;Mem[Q+1]↑.Hh.Lh←P;P←Q; END; BEGIN Mem[CurList.TailField]↑.Hh.Rh←P; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END; END; END;--:1093 --1095:-- HeadForVmode: PROCEDURE = BEGIN IF INT[CurList.ModeField]<0 THEN IF CurCmd#36 THEN OffSave [] ELSE BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[544]; END; PrintEsc[383];Print[935];BEGIN HelpPtr←2;HelpLine↑[1]←936; HelpLine↑[0]←937; END;Error[]; END ELSE BEGIN BackInput[]; CurTok←ParToken;BackInput[];CurInput.IndexField←4; END; END;--:1095 --1096:-- EndGraf: PROCEDURE = BEGIN IF CurList.ModeField=101 THEN BEGIN IF CurList.HeadField=CurList.TailField THEN PopNest [] ELSE LineBreak[Eqtb↑[4773].Int]; NormalParagraph[];ErrorCount←0; END; END;--:1096----1099: BeginInsertOrAdjust: PROCEDURE = BEGIN IF CurCmd=38 THEN CurVal←255 ELSE BEGIN ScanEightBitInt[]; IF CurVal=255 THEN BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134]; Print[938]; END;PrintEsc[202];PrintInt[255];BEGIN HelpPtr←1; HelpLine↑[0]←939; END;Error[];CurVal←0; END; END; SaveStack↑[SavePtr+0].Int←CurVal;SavePtr←SavePtr+1; NewSaveLevel[11];ScanLeftBrace[];NormalParagraph[];PushNest[]; CurList.ModeField←-1;CurList.AuxField←-65536000; END;--:1099----1101: MakeMark: PROCEDURE = BEGIN P:Halfword; P←ScanToks[FALSE,TRUE]; P←GetNode[2];Mem[P]↑.Hh.B0←4;Mem[P]↑.Hh.B1←0;Mem[P+1]↑.Int←DefRef; Mem[CurList.TailField]↑.Hh.Rh←P;CurList.TailField←P; END;--:1101 --1103:-- AppendPenalty: PROCEDURE = BEGIN ScanInt[]; BEGIN Mem[CurList.TailField]↑.Hh.Rh←NewPenalty[CurVal]; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END; IF CurList.ModeField=1 THEN BuildPage[]; END;--:1103----1105: Unpackage: PROCEDURE = BEGIN P:Halfword;C:PascalInteger[0..1]; C←CurChr;ScanEightBitInt[]; P←Eqtb↑[3822+CurVal].Hh.Rh;{IF P=0 THEN GOTO Label10; IF(ABS[CurList.ModeField]=201)OR ((ABS[CurList.ModeField]=1)AND (Mem[P ]↑.Hh.B0#1))OR ((ABS[CurList.ModeField]=101)AND (Mem[P]↑.Hh.B0#0)) THEN BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[950]; END; BEGIN HelpPtr←3;HelpLine↑[2]←951;HelpLine↑[1]←952;HelpLine↑[0]←953; END;Error[]; GOTO Label10; END; IF C=1 THEN Mem[CurList.TailField]↑.Hh.Rh←CopyNodeList[Mem[P+5]↑.Hh. Rh] ELSE BEGIN Mem[CurList.TailField]↑.Hh.Rh←Mem[P+5]↑.Hh.Rh; Eqtb↑[3822+CurVal].Hh.Rh←0;FreeNode[P,7]; END; WHILE Mem[CurList.TailField]↑.Hh.Rh#0 DO CurList.TailField←Mem[ CurList.TailField]↑.Hh.Rh ENDLOOP ;EXITS Label10 => NULL}; END;--:1110----1113: AppendItalicCorrection: PROCEDURE = BEGIN P:Halfword; F:InternalFontNumber; {IF CurList.TailField#CurList.HeadField THEN BEGIN IF( INT[CurList .TailField]>=HiMemMin) THEN P←CurList.TailField ELSE IF Mem[CurList .TailField]↑.Hh.B0=6 THEN P←CurList.TailField+1 ELSE GOTO Label10; F←Mem[P]↑.Hh.B0; BEGIN Mem[CurList.TailField]↑.Hh.Rh←NewKern[FontInfo↑[ ItalicBase↑[F]+PascalDIVPower2[(FontInfo↑[CharBase↑[F]+Mem[P]↑.Hh.B1].Qqqq.B2),2]].Int]; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END; Mem[CurList.TailField]↑.Hh.B1←1; END;EXITS Label10 => NULL}; END;--:1113----1117: AppendDiscretionary: PROCEDURE = BEGIN C:PascalInteger; BEGIN Mem[CurList.TailField]↑.Hh.Rh←NewDisc[]; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END; IF CurChr=1 THEN BEGIN C←HyphenChar↑[Eqtb↑[4078].Hh.Rh]; IF C>=0 THEN IF C<256 THEN Mem[CurList.TailField+1]↑.Hh.Lh← NewCharacter[Eqtb↑[4078].Hh.Rh,C]; END ELSE BEGIN SavePtr←SavePtr+1; SaveStack↑[SavePtr-1].Int←0;ScanLeftBrace[];NewSaveLevel[10]; PushNest[];CurList.ModeField←-101;CurList.AuxField←1000; END; END; --:1117----1119:-- BuildDiscretionary: PROCEDURE = BEGIN P, Q:Halfword;N:PascalInteger; Unsave[];--1121:--Q←CurList.HeadField; P←Mem[Q]↑.Hh.Rh;N←0; {WHILE P#0 DO BEGIN IF NOT ( INT[P]>=HiMemMin) THEN IF INT[Mem[P]↑.Hh.B0]>2 THEN IF Mem[P]↑.Hh.B0#11 THEN IF Mem[P]↑.Hh.B0#6 THEN BEGIN BEGIN IF Interaction =3 THEN NULL;PrintNl[134];Print[960]; END;BEGIN HelpPtr←1; HelpLine↑[0]←961; END;Error[];BeginDiagnostic[];PrintNl[962];ShowBox[P]; EndDiagnostic[TRUE];FlushNodeList[P];Mem[Q]↑.Hh.Rh←0; GOTO Label30; END; Q←P;P←Mem[Q]↑.Hh.Rh;N←N+1; END ENDLOOP ;EXITS Label30 => NULL};--:1121--P←Mem[CurList.HeadField]↑.Hh.Rh;PopNest[]; {SELECT SaveStack↑[SavePtr-1].Int FROM 0 =>Mem[CurList.TailField+1]↑.Hh.Lh←P ;1 =>Mem[CurList.TailField+1]↑.Hh.Rh←P;2 =>--1120: BEGIN IF(N>0)AND (ABS[CurList.ModeField]=201) THEN BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[954]; END;PrintEsc[220]; BEGIN HelpPtr←2;HelpLine↑[1]←955;HelpLine↑[0]←956; END; FlushNodeList[P];N←0;Error[]; END ELSE Mem[CurList.TailField]↑.Hh.Rh←P; IF N<128 THEN Mem[CurList.TailField]↑.Hh.B1←N ELSE BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[957]; END;BEGIN HelpPtr←2; HelpLine↑[1]←958;HelpLine↑[0]←959; END;Error[]; END; IF N>0 THEN CurList.TailField←Q;SavePtr←SavePtr-1; GOTO Label10; END--:1120--; ENDCASE;SaveStack↑[SavePtr-1].Int←SaveStack↑[SavePtr-1].Int+1; ScanLeftBrace[];NewSaveLevel[10];PushNest[];CurList.ModeField←-101; CurList.AuxField←1000;EXITS Label10 => NULL}; END;--:1119----1123:-- MakeAccent: PROCEDURE = BEGIN S, T:PascalReal;P, Q, R:Halfword;F:InternalFontNumber;A, H, X, W, Delta:Scaled; I:FourQuarters; ScanCharNum[];F←Eqtb↑[4078].Hh.Rh; P←NewCharacter[F,CurVal]; IF P#0 THEN BEGIN X←FontInfo↑[5+ParamBase↑[F]].Int; S←PascalFLOAT[FontInfo↑[1+ParamBase↑[F]].Int]/65536.0; A←FontInfo↑[WidthBase↑[F]+FontInfo↑[CharBase↑[F]+Mem[P]↑.Hh.B1].Qqqq.B0] .Int;DoAssignments[];--1124:--Q←0;F←Eqtb↑[4078].Hh.Rh; IF(CurCmd=11)OR (CurCmd=12)OR (CurCmd=67) THEN Q←NewCharacter[F, CurChr] ELSE IF CurCmd=16 THEN BEGIN ScanCharNum[]; Q←NewCharacter[F,CurVal]; END ELSE BackInput--:1124--[]; IF Q#0 THEN--1125:--BEGIN T←PascalFLOAT[FontInfo↑[1+ParamBase↑[F]].Int]/65536.0; I←FontInfo↑[CharBase↑[F]+Mem[Q]↑.Hh.B1].Qqqq; W←FontInfo↑[WidthBase↑[F]+I.B0].Int; H←FontInfo↑[ HeightBase↑[F]+PascalDIVPower2[(I.B1),4]].Int; IF H#X THEN BEGIN P←Hpack[P,0,1];Mem[P+4]↑.Int←X-H; END; Delta←PascalROUND[PascalFLOAT[(W-A)]/2.0+PascalFLOAT[H]*T-PascalFLOAT[X]*S];R←NewKern[Delta];Mem[R]↑.Hh.B1←1; Mem[CurList.TailField]↑.Hh.Rh←R;Mem[R]↑.Hh.Rh←P; CurList.TailField←NewKern[-A-Delta]; Mem[CurList.TailField]↑.Hh.B1←1;Mem[P]↑.Hh.Rh←CurList.TailField; P←Q; END--:1125--;Mem[CurList.TailField]↑.Hh.Rh←P; CurList.TailField←P;CurList.AuxField←1000; END; END;--:1123----1127: HandleRightBrace: PROCEDURE = BEGIN P, Q:Halfword;D:Scaled;F:PascalInteger; SELECT CurGroup FROM 1 =>Unsave[];0 =>BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[897]; END;BEGIN HelpPtr←2;HelpLine↑[1]←898; HelpLine↑[0]←899; END;Error[]; END;14,15,16 =>ExtraRightBrace[];--1085: 2 =>Package[0];3 =>BEGIN AdjustTail←64995;Package[0]; END;4 =>BEGIN EndGraf[]; Package[0]; END;5 =>BEGIN EndGraf[];Package[4]; END;--:1085----1100: 11 =>BEGIN EndGraf[];Q←Eqtb↑[3036].Hh.Rh;Mem[Q]↑.Hh.Rh←Mem[Q]↑.Hh.Rh+1; D←Eqtb↑[5207].Int;F←Eqtb↑[4809].Int;Unsave[];SavePtr←SavePtr-1; P←Vpackage[Mem[CurList.HeadField]↑.Hh.Rh,0,1,1073741823];PopNest[]; IF SaveStack↑[SavePtr+0].Int<255 THEN BEGIN BEGIN Mem[CurList. TailField]↑.Hh.Rh←GetNode[5]; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END; Mem[CurList.TailField]↑.Hh.B0←3; Mem[CurList.TailField]↑.Hh.B1←SaveStack↑[SavePtr+0].Int; Mem[CurList.TailField+3]↑.Int←Mem[P+3]↑.Int+Mem[P+2]↑.Int; Mem[CurList.TailField+4]↑.Hh.Lh←Mem[P+5]↑.Hh.Rh; Mem[CurList.TailField+4]↑.Hh.Rh←Q;Mem[CurList.TailField+2]↑.Int←D; Mem[CurList.TailField+1]↑.Int←F; END ELSE BEGIN BEGIN Mem[CurList.TailField]↑.Hh.Rh←GetNode[2]; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END; Mem[CurList.TailField]↑.Hh.B0←5;Mem[CurList.TailField]↑.Hh.B1←0; Mem[CurList.TailField+1]↑.Int←Mem[P+5]↑.Hh.Rh;DeleteGlueRef[Q]; END; FreeNode[P,7];IF NestPtr=0 THEN BuildPage[]; END;8 =>--1026: BEGIN IF CurInput.LocField#0 THEN--1027: BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[863]; END; BEGIN HelpPtr←2;HelpLine↑[1]←864;HelpLine↑[0]←865; END;Error[]; DO GetToken[]; IF CurInput.LocField=0 THEN EXIT; ENDLOOP; END--:1027--;EndTokenList[]; EndGraf[];Unsave[];OutputActive←FALSE;InsertPenalties←0;--1028: IF Eqtb↑[4077].Hh.Rh#0 THEN BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[866]; END;PrintEsc[277];PrintInt[255]; BEGIN HelpPtr←3;HelpLine↑[2]←867;HelpLine↑[1]←868;HelpLine↑[0]←869; END;BoxError[255]; END--:1028--; IF CurList.TailField#CurList.HeadField THEN BEGIN Mem[PageTail]↑.Hh .Rh←Mem[CurList.HeadField]↑.Hh.Rh;PageTail←CurList.TailField; END; IF Mem[64998]↑.Hh.Rh#0 THEN BEGIN IF Mem[64999]↑.Hh.Rh=0 THEN Nest↑[0]. TailField←PageTail;Mem[PageTail]↑.Hh.Rh←Mem[64999]↑.Hh.Rh; Mem[64999]↑.Hh.Rh←Mem[64998]↑.Hh.Rh;Mem[64998]↑.Hh.Rh←0;PageTail←64998; END;PopNest[];BuildPage[]; END--:1026--;--:1100----1118:--10 =>BuildDiscretionary[]; --:1118----1132:--6 =>BEGIN BackInput[];CurTok←6855; BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[486]; END;PrintEsc[757]; Print[487];BEGIN HelpPtr←1;HelpLine↑[0]←978; END;InsError[]; END;--:1132 --1133:--7 =>BEGIN EndGraf[];Unsave[];AlignPeek[]; END;--:1133----1168: 12 =>BEGIN EndGraf[];Unsave[];SavePtr←SavePtr-2; P←Vpackage[Mem[CurList.HeadField]↑.Hh.Rh,SaveStack↑[SavePtr+1].Int, SaveStack↑[SavePtr+0].Int,1073741823];PopNest[]; BEGIN Mem[CurList.TailField]↑.Hh.Rh←NewNoad[]; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END; Mem[CurList.TailField]↑.Hh.B0←29;Mem[CurList.TailField+1]↑.Hh.Rh←2; Mem[CurList.TailField+1]↑.Hh.Lh←P; END;--:1168----1173:--13 =>BuildChoices[]; --:1173----1186:--9 =>BEGIN Unsave[];SavePtr←SavePtr-1; Mem[SaveStack↑[SavePtr+0].Int]↑.Hh.Rh←3;P←FinMlist[0]; Mem[SaveStack↑[SavePtr+0].Int]↑.Hh.Lh←P; IF P#0 THEN IF Mem[P]↑.Hh.Rh=0 THEN IF Mem[P]↑.Hh.B0=16 THEN BEGIN IF Mem [P+3]↑.Hh.Rh=0 THEN IF Mem[P+2]↑.Hh.Rh=0 THEN BEGIN Mem[SaveStack↑ [SavePtr+0].Int]↑.Hh←Mem[P+1]↑.Hh;FreeNode[P,4]; END; END ELSE IF Mem[P]↑.Hh.B0=28 THEN IF SaveStack↑[SavePtr+0].Int=CurList. TailField+1 THEN IF Mem[CurList.TailField]↑.Hh.B0=16 THEN--1187: BEGIN Q←CurList.HeadField; WHILE Mem[Q]↑.Hh.Rh#CurList.TailField DO Q←Mem[Q]↑.Hh.Rh ENDLOOP ; Mem[Q]↑.Hh.Rh←P;FreeNode[CurList.TailField,4];CurList.TailField←P; END--:1187--; END;--:1186-- ENDCASE =>Confusion[900]; END;--:1068 END.