-- file: TexBuildPage2Impl.mesa -- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:38 am PDT DIRECTORY PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexOps, TexParagraph, TexBuildPage, TexScan, TexDvi, TexRest, TexSysdepInline; TexBuildPage2Impl: PROGRAM IMPORTS TexTypes, TexInteraction, TexMemory, TexSymbols, TexOps, TexParagraph, TexBuildPage, TexScan, TexDvi, TexRest, TexSysdepInline EXPORTS TexBuildPage = PUBLIC BEGIN OPEN PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexOps, TexParagraph, TexBuildPage, TexScan, TexDvi, TexRest, TexSysdepInline; --:942----968:-- PrunePageTop: PROCEDURE[P: Halfword] RETURNS[PrunePageTopResult: Halfword] = BEGIN PrevP:Halfword;Q:Halfword; PrevP←64997;Mem[64997]↑.Hh.Rh←P; WHILE P#0 DO SELECT Mem[P]↑.Hh.B0 FROM 0,1,2 =>--969: BEGIN Q←NewSkipParam[10];Mem[PrevP]↑.Hh.Rh←Q;Mem[Q]↑.Hh.Rh←P; IF Mem[TempPtr+1]↑.Int>Mem[P+3]↑.Int THEN Mem[TempPtr+1]↑.Int←Mem[ TempPtr+1]↑.Int-Mem[P+3]↑.Int ELSE Mem[TempPtr+1]↑.Int←0;P←0; END--:969--; 8,4,3 =>BEGIN PrevP←P;P←Mem[PrevP]↑.Hh.Rh; END;10,11,12 =>BEGIN Q←P; P←Mem[Q]↑.Hh.Rh;Mem[Q]↑.Hh.Rh←0;Mem[PrevP]↑.Hh.Rh←P;FlushNodeList[Q]; END; ENDCASE =>Confusion[812] ENDLOOP ;PrunePageTopResult←Mem[64997]↑.Hh.Rh; END;--:968 --970:-- VertBreak: PROCEDURE[P: Halfword,H,D: Scaled] RETURNS[VertBreakResult: Halfword] = BEGIN PrevP:Halfword;Q, R:Halfword;Pi:PascalInteger;B:PascalInteger; LeastCost:PascalInteger;BestPlace:Halfword;PrevDp:Scaled;T:SmallNumber; PrevP←P;LeastCost←1073741823;ActiveWidth↑[1]←0; ActiveWidth↑[2]←0;ActiveWidth↑[3]←0;ActiveWidth↑[4]←0; ActiveWidth↑[5]←0;ActiveWidth↑[6]←0;PrevDp←0; {WHILE TRUE DO BEGIN--972:-- {{IF P=0 THEN Pi←-10000 ELSE--973: SELECT Mem[P]↑.Hh.B0 FROM 0,1,2 =>BEGIN ActiveWidth↑[1]← ActiveWidth↑[1]+PrevDp+Mem[P+3]↑.Int;PrevDp←Mem[P+2]↑.Int; GOTO Label45; END;8 =>--1364: GOTO Label45--:1364--;10 =>IF( INT[Mem[PrevP]↑.Hh.B0]<9) THEN Pi←0 ELSE GOTO Label90; 11 =>BEGIN IF Mem[P]↑.Hh.Rh=0 THEN T←12 ELSE T←Mem[Mem[P]↑.Hh.Rh]↑.Hh.B0; IF T=10 THEN Pi←0 ELSE GOTO Label90; END;12 =>Pi←Mem[P+1]↑.Int;4,3 => GOTO Label45; ENDCASE =>Confusion[813]--:973--;--974:--IF Pi<10000 THEN BEGIN--975: IF ActiveWidth↑[1]<H THEN IF (ActiveWidth↑[3]#0)OR (ActiveWidth↑[4]#0)OR (ActiveWidth↑[5]#0) THEN B←0 ELSE B←Badness[H-ActiveWidth↑[1], ActiveWidth↑[2]] ELSE IF ActiveWidth↑[1]-H>ActiveWidth↑[6] THEN B← 1073741823 ELSE B←Badness[ActiveWidth↑[1]-H,ActiveWidth↑[6]]--:975--; IF B<1073741823 THEN IF Pi<=-10000 THEN B←Pi ELSE IF B<10000 THEN B← B+Pi ELSE B←100000;IF B<=LeastCost THEN BEGIN BestPlace←P; LeastCost←B;BestHeightPlusDepth←ActiveWidth↑[1]+PrevDp; END; IF(B=1073741823)OR (Pi<=-10000) THEN GOTO Label30; END--:974--; IF( INT[Mem[P]↑.Hh.B0]<10)OR ( INT[Mem[P]↑.Hh.B0]>11) THEN GOTO Label45;EXITS Label90 => NULL};--976: IF Mem[P]↑.Hh.B0=11 THEN Q←P ELSE BEGIN Q←Mem[P+1]↑.Hh.Lh; ActiveWidth↑[2+Mem[Q]↑.Hh.B0]←ActiveWidth↑[2+Mem[Q]↑.Hh.B0]+Mem[Q+2]↑.Int; ActiveWidth↑[6]←ActiveWidth↑[6]+Mem[Q+3]↑.Int; IF(Mem[Q]↑.Hh.B1#0)AND (Mem[Q+3]↑.Int#0) THEN BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[814]; END;BEGIN HelpPtr←4;HelpLine↑[3]←815; HelpLine↑[2]←816;HelpLine↑[1]←817;HelpLine↑[0]←781; END;Error[]; R←NewSpec[Q];Mem[R]↑.Hh.B1←0;DeleteGlueRef[Q];Mem[P+1]↑.Hh.Lh←R; END; END;ActiveWidth↑[1]←ActiveWidth↑[1]+PrevDp+Mem[Q+1]↑.Int; PrevDp←0--:976--; EXITS Label45 => NULL};IF PrevDp>D THEN BEGIN ActiveWidth↑[1]←ActiveWidth↑[1]+PrevDp-D; PrevDp←D; END;--:972--PrevP←P;P←Mem[PrevP]↑.Hh.Rh; END ENDLOOP ; EXITS Label30 => NULL};VertBreakResult←BestPlace; END;--:970----977:-- Vsplit: PROCEDURE[N: EightBits, H: Scaled] RETURNS[VsplitResult: Halfword] = BEGIN V:Halfword;P:Halfword;Q:Halfword; V←Eqtb↑[3822+N].Hh.Rh; IF CurMark↑[3]#0 THEN BEGIN DeleteTokenRef[CurMark↑[3]]; CurMark↑[3]←0;DeleteTokenRef[CurMark↑[4]];CurMark↑[4]←0; END;--978: {IF V=0 THEN BEGIN VsplitResult←0; GOTO Label10; END; IF Mem[V]↑.Hh.B0#1 THEN BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134]; Print[210]; END;PrintEsc[818];Print[819];PrintEsc[820]; BEGIN HelpPtr←2;HelpLine↑[1]←821;HelpLine↑[0]←822; END;Error[]; VsplitResult←0; GOTO Label10; END--:978--; Q←VertBreak[Mem[V+5]↑.Hh.Rh,H,Eqtb↑[5207].Int];--979:--P←Mem[V+5]↑.Hh.Rh; {IF P=Q THEN Mem[V+5]↑.Hh.Rh←0 ELSE WHILE TRUE DO BEGIN IF Mem[P]↑.Hh.B0=4 THEN IF CurMark↑[3]=0 THEN BEGIN CurMark↑[3]←Mem[P+1]↑.Int; CurMark↑[4]←CurMark↑[3]; Mem[CurMark↑[3]]↑.Hh.Lh←Mem[CurMark↑[3]]↑.Hh.Lh+2; END ELSE BEGIN DeleteTokenRef[CurMark↑[4]];CurMark↑[4]←Mem[P+1]↑.Int; Mem[CurMark↑[4]]↑.Hh.Lh←Mem[CurMark↑[4]]↑.Hh.Lh+1; END; IF Mem[P]↑.Hh.Rh=Q THEN BEGIN Mem[P]↑.Hh.Rh←0; GOTO Label30; END; P←Mem[P]↑.Hh.Rh; END ENDLOOP ;EXITS Label30 => NULL};--:979--Q←PrunePageTop[Q];P←Mem[V+5]↑.Hh.Rh; FreeNode[V,7]; IF Q=0 THEN Eqtb↑[3822+N].Hh.Rh←0 ELSE Eqtb↑[3822+N].Hh.Rh←Vpackage[Q,0, 1,1073741823];VsplitResult←Vpackage[P,H,0,Eqtb↑[5207].Int];EXITS Label10 => NULL}; END;--:977----985: PrintTotals: PROCEDURE = BEGIN PrintScaled[PageSoFar↑[1]]; IF PageSoFar↑[2]#0 THEN BEGIN Print[184];PrintScaled[PageSoFar↑[2]]; Print[210]; END;IF PageSoFar↑[3]#0 THEN BEGIN Print[184]; PrintScaled[PageSoFar↑[3]];Print[183]; END; IF PageSoFar↑[4]#0 THEN BEGIN Print[184];PrintScaled[PageSoFar↑[4]]; Print[831]; END;IF PageSoFar↑[5]#0 THEN BEGIN Print[184]; PrintScaled[PageSoFar↑[5]];Print[832]; END; IF PageSoFar↑[6]#0 THEN BEGIN Print[185];PrintScaled[PageSoFar↑[6]]; END; END;--:985----987:-- FreezePageSpecs: PROCEDURE[S: SmallNumber] = BEGIN PageContents←S;PageSoFar↑[0]←Eqtb↑[5205].Int; PageMaxDepth←Eqtb↑[5206].Int;PageSoFar↑[7]←0;PageSoFar↑[1]←0; PageSoFar↑[2]←0;PageSoFar↑[3]←0;PageSoFar↑[4]←0;PageSoFar↑[5]←0; PageSoFar↑[6]←0;LeastPageCost←1073741823; IF Eqtb↑[4800].Int>0 THEN BEGIN BeginDiagnostic[];PrintNl[840]; PrintScaled[PageSoFar↑[0]];Print[841];PrintScaled[PageMaxDepth]; EndDiagnostic[FALSE]; END; END;--:987----992: BoxError: PROCEDURE[N: EightBits] = BEGIN Error[];BeginDiagnostic[]; PrintNl[693];ShowBox[Eqtb↑[3822+N].Hh.Rh];EndDiagnostic[TRUE]; FlushNodeList[Eqtb↑[3822+N].Hh.Rh];Eqtb↑[3822+N].Hh.Rh←0; END;--:992 --993:-- EnsureVbox: PROCEDURE[N: EightBits] = BEGIN P:Halfword; P←Eqtb↑[3822+N].Hh.Rh; IF P#0 THEN IF Mem[P]↑.Hh.B0=0 THEN BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[842]; END;BEGIN HelpPtr←3;HelpLine↑[2]←843; HelpLine↑[1]←844;HelpLine↑[0]←845; END;BoxError[N]; END; END;--:993 --994:----1012:-- FireUp: PROCEDURE[C: Halfword] = BEGIN P, Q, R, S:Halfword;PrevP:Halfword;N:PascalInteger[0..255];Wait:PascalBoolean; SaveVbadness:PascalInteger;SaveVfuzz:Scaled;SaveSplitTopSkip:Halfword; --1013: IF Mem[BestPageBreak]↑.Hh.B0=12 THEN BEGIN GeqWordDefine[4806,Mem[ BestPageBreak+1]↑.Int];Mem[BestPageBreak+1]↑.Int←10000; END ELSE GeqWordDefine[4806,10000]--:1013--; IF CurMark↑[2]#0 THEN BEGIN IF CurMark↑[0]#0 THEN DeleteTokenRef[ CurMark↑[0]];CurMark↑[0]←CurMark↑[2]; Mem[CurMark↑[0]]↑.Hh.Lh←Mem[CurMark↑[0]]↑.Hh.Lh+1; DeleteTokenRef[CurMark↑[1]];CurMark↑[1]←0; END;--1014: IF C=BestPageBreak THEN BestPageBreak←0;--1015: IF Eqtb↑[4077].Hh.Rh#0 THEN BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[210]; END;PrintEsc[277];Print[856]; BEGIN HelpPtr←2;HelpLine↑[1]←857;HelpLine↑[0]←845; END; BoxError[255]; END--:1015--;InsertPenalties←0; SaveSplitTopSkip←Eqtb↑[3036].Hh.Rh;--1018:--R←Mem[65000]↑.Hh.Rh; WHILE R#65000 DO BEGIN IF Mem[R+2]↑.Hh.Lh#0 THEN BEGIN N←Mem[R]↑.Hh.B1; EnsureVbox[N]; IF Eqtb↑[3822+N].Hh.Rh=0 THEN Eqtb↑[3822+N].Hh.Rh←NewNullBox[]; P←Eqtb↑[3822+N].Hh.Rh+5;WHILE Mem[P]↑.Hh.Rh#0 DO P←Mem[P]↑.Hh.Rh ENDLOOP ; Mem[R+2]↑.Hh.Rh←P; END;R←Mem[R]↑.Hh.Rh; END--:1018-- ENDLOOP ;Q←64996; Mem[Q]↑.Hh.Rh←0;PrevP←64998;P←Mem[PrevP]↑.Hh.Rh; WHILE P#BestPageBreak DO BEGIN IF Mem[P]↑.Hh.B0=3 THEN--1020: BEGIN R←Mem[65000]↑.Hh.Rh; WHILE Mem[R]↑.Hh.B1#Mem[P]↑.Hh.B1 DO R←Mem[R]↑.Hh.Rh ENDLOOP ; IF Mem[R+2]↑.Hh.Lh=0 THEN Wait←TRUE ELSE BEGIN Wait←FALSE; S←Mem[P+4]↑.Hh.Lh;Mem[Mem[R+2]↑.Hh.Rh]↑.Hh.Rh←S;S←Mem[R+2]↑.Hh.Rh; IF Mem[R+2]↑.Hh.Lh=P THEN--1021: BEGIN IF Mem[R]↑.Hh.B0=1 THEN IF(Mem[R+1]↑.Hh.Lh=P)AND (Mem[R+1]↑.Hh.Rh#0) THEN BEGIN WHILE Mem[S]↑.Hh.Rh#Mem[R+1]↑.Hh.Rh DO S←Mem[S]↑.Hh.Rh ENDLOOP ; Eqtb↑[3036].Hh.Rh←Mem[P+4]↑.Hh.Rh; Mem[P+4]↑.Hh.Lh←PrunePageTop[Mem[R+1]↑.Hh.Rh]; IF Mem[P+4]↑.Hh.Lh#0 THEN BEGIN TempPtr←Vpackage[Mem[P+4]↑.Hh.Lh,0,1, 1073741823];Mem[P+3]↑.Int←Mem[TempPtr+3]↑.Int+Mem[TempPtr+2]↑.Int; FreeNode[TempPtr,7];Wait←TRUE; END;Mem[S]↑.Hh.Rh←0; END; Mem[R+2]↑.Hh.Lh←0;N←Mem[R]↑.Hh.B1; TempPtr←Mem[Eqtb↑[3822+N].Hh.Rh+5]↑.Hh.Rh; FreeNode[Eqtb↑[3822+N].Hh.Rh,7]; Eqtb↑[3822+N].Hh.Rh←Vpackage[TempPtr,0,1,1073741823]; END--:1021 ELSE BEGIN WHILE Mem[S]↑.Hh.Rh#0 DO S←Mem[S]↑.Hh.Rh ENDLOOP ;Mem[R+2]↑.Hh.Rh←S; END; END;--1022:--Mem[PrevP]↑.Hh.Rh←Mem[P]↑.Hh.Rh;Mem[P]↑.Hh.Rh←0; IF Wait THEN BEGIN Mem[Q]↑.Hh.Rh←P;Q←P; InsertPenalties←InsertPenalties+1; END ELSE BEGIN DeleteGlueRef[Mem[P+4]↑.Hh.Rh];FreeNode[P,5]; END; P←PrevP--:1022--; END--:1020-- ELSE IF Mem[P]↑.Hh.B0=4 THEN--1016: BEGIN IF CurMark↑[1]=0 THEN BEGIN CurMark↑[1]←Mem[P+1]↑.Int; Mem[CurMark↑[1]]↑.Hh.Lh←Mem[CurMark↑[1]]↑.Hh.Lh+1; END; IF CurMark↑[2]#0 THEN DeleteTokenRef[CurMark↑[2]]; CurMark↑[2]←Mem[P+1]↑.Int; Mem[CurMark↑[2]]↑.Hh.Lh←Mem[CurMark↑[2]]↑.Hh.Lh+1; END--:1016--;PrevP←P; P←Mem[PrevP]↑.Hh.Rh; END ENDLOOP ;Eqtb↑[3036].Hh.Rh←SaveSplitTopSkip;--1017: IF P#0 THEN BEGIN IF Mem[64999]↑.Hh.Rh=0 THEN IF NestPtr=0 THEN CurList.TailField←PageTail ELSE Nest↑[0].TailField←PageTail; Mem[PageTail]↑.Hh.Rh←Mem[64999]↑.Hh.Rh;Mem[64999]↑.Hh.Rh←P; Mem[PrevP]↑.Hh.Rh←0; END;SaveVbadness←Eqtb↑[4794].Int; Eqtb↑[4794].Int←10000;SaveVfuzz←Eqtb↑[5210].Int; Eqtb↑[5210].Int←1073741823; Eqtb↑[4077].Hh.Rh←Vpackage[Mem[64998]↑.Hh.Rh,BestSize,0,PageMaxDepth]; Eqtb↑[4794].Int←SaveVbadness;Eqtb↑[5210].Int←SaveVfuzz; IF LastGlue#65515 THEN DeleteGlueRef[LastGlue];--991: PageContents←0;PageTail←64998;Mem[64998]↑.Hh.Rh←0;LastGlue←65515; LastPenalty←0;LastKern←0;PageSoFar↑[7]←0;PageMaxDepth←0--:991--; IF Q#64996 THEN BEGIN Mem[64998]↑.Hh.Rh←Mem[64996]↑.Hh.Rh;PageTail←Q; END--:1017--;--1019:--R←Mem[65000]↑.Hh.Rh; WHILE R#65000 DO BEGIN Q←Mem[R]↑.Hh.Rh;FreeNode[R,4];R←Q; END ENDLOOP ; Mem[65000]↑.Hh.Rh←65000--:1019----:1014--; IF(CurMark↑[0]#0)AND (CurMark↑[1]=0) THEN BEGIN CurMark↑[1]←CurMark↑[0]; Mem[CurMark↑[0]]↑.Hh.Lh←Mem[CurMark↑[0]]↑.Hh.Lh+1; END; {IF Eqtb↑[3557].Hh.Rh#0 THEN IF DeadCycles>=Eqtb↑[4807].Int THEN--1024: BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[858]; END; PrintInt[DeadCycles];Print[859];BEGIN HelpPtr←3;HelpLine↑[2]←860; HelpLine↑[1]←861;HelpLine↑[0]←862; END;Error[]; END--:1024-- ELSE--1025: BEGIN OutputActive←TRUE;DeadCycles←DeadCycles+1;PushNest[]; CurList.ModeField←-1;CurList.AuxField←-65536000; CurList.MlField←-Line;BeginTokenList[Eqtb↑[3557].Hh.Rh,6]; NewSaveLevel[8];NormalParagraph[];ScanLeftBrace[]; GOTO Label10; END--:1025--; --1023: BEGIN IF Mem[64998]↑.Hh.Rh#0 THEN BEGIN IF Mem[64999]↑.Hh.Rh=0 THEN IF NestPtr=0 THEN CurList.TailField←PageTail ELSE Nest↑[0].TailField← PageTail ELSE Mem[PageTail]↑.Hh.Rh←Mem[64999]↑.Hh.Rh; Mem[64999]↑.Hh.Rh←Mem[64998]↑.Hh.Rh;Mem[64998]↑.Hh.Rh←0;PageTail←64998; END;ShipOut[Eqtb↑[4077].Hh.Rh];Eqtb↑[4077].Hh.Rh←0; END--:1023--;EXITS Label10 => NULL}; END; AppSpace: PROCEDURE = BEGIN P:Halfword;Q:Halfword;F:InternalFontNumber;K:PascalInteger[0..FontMemSize]; IF(CurList.AuxField>=2000)AND (Eqtb↑[3039].Hh.Rh#0) THEN Q← NewParamGlue[13] ELSE BEGIN IF Eqtb↑[3038].Hh.Rh#0 THEN P←Eqtb↑[3038]. Hh.Rh ELSE--1042:--BEGIN P←FontGlue↑[Eqtb↑[4078].Hh.Rh]; IF P=0 THEN BEGIN F←Eqtb↑[4078].Hh.Rh;P←NewSpec[0];K←ParamBase↑[F]+2; Mem[P+1]↑.Int←FontInfo↑[K].Int;Mem[P+2]↑.Int←FontInfo↑[K+1].Int; Mem[P+3]↑.Int←FontInfo↑[K+2].Int;FontGlue↑[F]←P; END; END--:1042--; P←NewSpec[P];--1044: IF CurList.AuxField>=2000 THEN Mem[P+1]↑.Int←Mem[P+1]↑.Int+FontInfo↑[ 7+ParamBase↑[Eqtb↑[4078].Hh.Rh]].Int; Mem[P+2]↑.Int←XnOverD[Mem[P+2]↑.Int,CurList.AuxField,1000]; Mem[P+3]↑.Int←XnOverD[Mem[P+3]↑.Int,1000,CurList.AuxField]--:1044--; Q←NewGlue[P];Mem[P]↑.Hh.Rh←0; END;Mem[CurList.TailField]↑.Hh.Rh←Q; CurList.TailField←Q; END;--:1043----1047:-- InsertDollarSign: PROCEDURE = BEGIN BackInput[];CurTok←804;BEGIN IF Interaction=3 THEN NULL;PrintNl[134]; Print[870]; END;BEGIN HelpPtr←2;HelpLine↑[1]←871;HelpLine↑[0]←872; END;InsError[]; END;--:1047----1049:-- YouCant: PROCEDURE = BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[544]; END; PrintCmdChr[CurCmd,CurChr];Print[873]; PrintMode[CurList.ModeField]; END;--:1049----1050: ReportIllegalCase: PROCEDURE = BEGIN YouCant[];BEGIN HelpPtr←4; HelpLine↑[3]←874;HelpLine↑[2]←875;HelpLine↑[1]←876;HelpLine↑[0]←877; END;Error[]; END;--:1050----1051:-- Privileged: PROCEDURE RETURNS[PrivilegedResult: PascalBoolean] = BEGIN IF INT[CurList.ModeField]>0 THEN PrivilegedResult←TRUE ELSE BEGIN ReportIllegalCase[];PrivilegedResult←FALSE; END; END;--:1051----1054: ItsAllOver: PROCEDURE RETURNS[ItsAllOverResult: PascalBoolean] = BEGIN {IF Privileged [] THEN BEGIN IF(64998=PageTail)AND (CurList. HeadField=CurList.TailField)AND (DeadCycles=0) THEN BEGIN ItsAllOverResult ←TRUE; GOTO Label10; END;BackInput[]; BEGIN Mem[CurList.TailField]↑.Hh.Rh←NewNullBox[]; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END; Mem[CurList.TailField+1]↑.Int←Eqtb↑[5204].Int; BEGIN Mem[CurList.TailField]↑.Hh.Rh←NewGlue[8]; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END; BEGIN Mem[CurList.TailField]↑.Hh.Rh←NewPenalty[-1073741824]; CurList.TailField←Mem[CurList.TailField]↑.Hh.Rh; END;BuildPage[]; END; ItsAllOverResult←FALSE;EXITS Label10 => NULL}; END;--:1054----1060:-- DeleteLast: PROCEDURE = BEGIN P:Halfword; IF(CurList.ModeField=1)AND (CurList.TailField=CurList. HeadField) THEN--1106: BEGIN IF(CurChr#10)OR (LastGlue#65515) THEN BEGIN YouCant[]; BEGIN HelpPtr←2;HelpLine↑[1]←924;HelpLine↑[0]←940; END; IF CurChr=11 THEN HelpLine↑[0]←(941) ELSE IF CurChr#10 THEN HelpLine ↑[0]←(942);Error[]; END; END--:1106 ELSE BEGIN IF NOT ( INT[CurList.TailField]>=HiMemMin) THEN IF Mem[CurList. TailField]↑.Hh.B0=CurChr THEN BEGIN P←CurList.HeadField; WHILE Mem[P]↑.Hh.Rh#CurList.TailField DO P←Mem[P]↑.Hh.Rh ENDLOOP ; Mem[P]↑.Hh.Rh←0;FlushNodeList[CurList.TailField]; CurList.TailField←P; END; END; END;--:1105----1110:-- END.