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