-- 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.