-- file: TexRest2Impl.mesa
-- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:38 am PDT


DIRECTORY
  PascalBasic,
  PascalWizardFiles,
  TexTypes,
  TexSysdep,
  TexSysdepInline,
  TexInit,
  TexInteraction,
  TexMemory,
  TexSymbols,
  TexScan,
  TexOps,
  TexParagraph,
  TexBuildPage,
  TexRest;

TexRest2Impl: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, TexTypes, TexSysdep, TexSysdepInline, TexInit, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexParagraph, TexBuildPage, TexRest EXPORTS TexRest = PUBLIC
BEGIN OPEN PascalBasic, PascalWizardFiles, TexTypes, TexSysdep, TexSysdepInline, TexInit, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexParagraph, TexBuildPage, TexRest;
 GetRToken: PROCEDURE = 
BEGIN  DO {--Label20:--DO GetToken[];
 IF CurTok#2592 THEN EXIT; ENDLOOP;
IF(CurCs=0)OR ( INT[CurCs]>2758) THEN BEGIN BEGIN IF Interaction=3  THEN NULL;
PrintNl[134];Print[1037]; END;BEGIN HelpPtr←5;HelpLine↑[4]←1038;
HelpLine↑[3]←1039;HelpLine↑[2]←1040;HelpLine↑[1]←1041;
HelpLine↑[0]←1042; END;IF CurCs=0  THEN BackInput[];CurTok←6854;
InsError[]; GOTO Label20; END;EXIT; EXITS Label20 => NULL} ENDLOOP; END;--:1215----1229:-- TrapZeroGlue: PROCEDURE
 = 
BEGIN IF(Mem[CurVal+1]↑.Int=0)AND (Mem[CurVal+2]↑.Int=0)AND (Mem[CurVal+3
]↑.Int=0) THEN BEGIN Mem[0]↑.Hh.Rh←Mem[0]↑.Hh.Rh+1;
DeleteGlueRef[CurVal];CurVal←0; END; END;--:1229----1236:
 DoRegisterCommand: PROCEDURE[A: SmallNumber] = 
BEGIN 
 L, Q, R, S:Halfword;P:PascalInteger[0..3]; 
 Q←CurCmd;--1237:
{{BEGIN IF Q#88  THEN BEGIN GetXToken[];
IF( INT[CurCmd]>=72)AND ( INT[CurCmd]<=75) THEN BEGIN L←CurChr;P←CurCmd-72;
 GOTO Label40; END;IF CurCmd#88  THEN BEGIN BEGIN IF Interaction=3  THEN NULL;
PrintNl[134];Print[544]; END;PrintCmdChr[CurCmd,CurChr];Print[545];
PrintCmdChr[Q,0];BEGIN HelpPtr←1;HelpLine↑[0]←1063; END;Error[];
 GOTO Label10; END; END;P←CurChr;ScanEightBitInt[];
SELECT P FROM 0 =>L←CurVal+4817;1 =>L←CurVal+5221;2 =>L←CurVal+3044;
3 =>L←CurVal+3300; ENDCASE; END;EXITS Label40 => NULL};--:1237--IF Q=88  THEN ScanOptionalEquals [] ELSE IF ScanKeyword[1059] THEN NULL;
ArithError←FALSE;IF  INT[Q]<90  THEN--1238:
IF  INT[P]<2  THEN BEGIN IF P=0  THEN ScanInt [] ELSE ScanDimen[FALSE,FALSE,FALSE
];IF Q=89  THEN CurVal←CurVal+Eqtb↑[L].Int; END  ELSE BEGIN ScanGlue[P];
IF Q=89  THEN--1239:--BEGIN Q←NewSpec[CurVal];R←Eqtb↑[L].Hh.Rh;
DeleteGlueRef[CurVal];Mem[Q+1]↑.Int←Mem[Q+1]↑.Int+Mem[R+1]↑.Int;
IF Mem[Q+2]↑.Int=0  THEN Mem[Q]↑.Hh.B0←0;
IF Mem[Q]↑.Hh.B0=Mem[R]↑.Hh.B0  THEN Mem[Q+2]↑.Int←Mem[Q+2]↑.Int+Mem[R+2]↑.
Int  ELSE IF( INT[Mem[Q]↑.Hh.B0]<Mem[R]↑.Hh.B0)AND (Mem[R+2]↑.Int#0) THEN BEGIN Mem
[Q+2]↑.Int←Mem[R+2]↑.Int;Mem[Q]↑.Hh.B0←Mem[R]↑.Hh.B0; END;
IF Mem[Q+3]↑.Int=0  THEN Mem[Q]↑.Hh.B1←0;
IF Mem[Q]↑.Hh.B1=Mem[R]↑.Hh.B1  THEN Mem[Q+3]↑.Int←Mem[Q+3]↑.Int+Mem[R+3]↑.
Int  ELSE IF( INT[Mem[Q]↑.Hh.B1]<Mem[R]↑.Hh.B1)AND (Mem[R+3]↑.Int#0) THEN BEGIN Mem
[Q+3]↑.Int←Mem[R+3]↑.Int;Mem[Q]↑.Hh.B1←Mem[R]↑.Hh.B1; END;CurVal←Q;
 END--:1239--; END--:1238-- ELSE--1240:--BEGIN ScanInt[];
IF  INT[P]<2  THEN IF Q=90  THEN CurVal←NxPlusY[Eqtb↑[L].Int,CurVal,0] ELSE
CurVal←XOverN[Eqtb↑[L].Int,CurVal] ELSE BEGIN S←Eqtb↑[L].Hh.Rh;
R←NewSpec[S];
IF Q=90  THEN BEGIN Mem[R+1]↑.Int←NxPlusY[Mem[S+1]↑.Int,CurVal,0];
Mem[R+2]↑.Int←NxPlusY[Mem[S+2]↑.Int,CurVal,0];
Mem[R+3]↑.Int←NxPlusY[Mem[S+3]↑.Int,CurVal,0];
 END  ELSE BEGIN Mem[R+1]↑.Int←XOverN[Mem[S+1]↑.Int,CurVal];
Mem[R+2]↑.Int←XOverN[Mem[S+2]↑.Int,CurVal];
Mem[R+3]↑.Int←XOverN[Mem[S+3]↑.Int,CurVal]; END;CurVal←R; END;
 END--:1240--;IF ArithError  THEN BEGIN BEGIN IF Interaction=3  THEN NULL;
PrintNl[134];Print[1060]; END;BEGIN HelpPtr←2;HelpLine↑[1]←1061;
HelpLine↑[0]←1062; END;Error[]; GOTO Label10; END;
IF  INT[P]<2  THEN IF( INT[A]>=4) THEN GeqWordDefine[L,CurVal] ELSE EqWordDefine[L
,CurVal] ELSE BEGIN TrapZeroGlue[];
IF( INT[A]>=4) THEN GeqDefine[L,116,CurVal] ELSE EqDefine[L,116,CurVal]; END;
EXITS Label10 => NULL}; END;--:1236----1243:-- AlterAux: PROCEDURE = 
BEGIN C:Halfword;
 IF CurChr#ABS[CurList.ModeField] THEN ReportIllegalCase [] ELSE
BEGIN C←CurChr;ScanOptionalEquals[];
IF C=1  THEN BEGIN ScanDimen[FALSE,FALSE,FALSE];
CurList.AuxField←CurVal; END  ELSE BEGIN ScanInt[];
IF(CurVal<=0)OR (CurVal>32767) THEN BEGIN BEGIN IF Interaction=3  THEN NULL;
PrintNl[134];Print[1064]; END;BEGIN HelpPtr←1;HelpLine↑[0]←1065; END;
IntError[CurVal]; END  ELSE CurList.AuxField←CurVal; END; END; END;
--:1243----1244:-- AlterPrevGraf: PROCEDURE = 
BEGIN P:PascalInteger[0..NestSize];
 Nest↑[NestPtr]←CurList;P←NestPtr;
WHILE ABS[Nest↑[P].ModeField]#1 DO P←P-1 ENDLOOP ;ScanOptionalEquals[];
ScanInt[];IF CurVal<0  THEN BEGIN BEGIN IF Interaction=3  THEN NULL;
PrintNl[134];Print[807]; END;PrintEsc[393];BEGIN HelpPtr←1;
HelpLine↑[0]←1066; END;IntError[CurVal];
 END  ELSE BEGIN Nest↑[P].PgField←CurVal;CurList←Nest↑[NestPtr]; END;
 END;--:1244----1245:-- AlterPageSoFar: PROCEDURE = 
BEGIN C:PascalInteger[0..7];
 C←CurChr;ScanOptionalEquals[];ScanDimen[FALSE,FALSE,FALSE];
PageSoFar↑[C]←CurVal; END;--:1245----1246:-- AlterInteger: PROCEDURE
 = 
BEGIN C:PascalInteger[0..1]; C←CurChr;ScanOptionalEquals[];ScanInt[];
IF C=0  THEN DeadCycles←CurVal  ELSE InsertPenalties←CurVal; END;
--:1246----1247:-- AlterBoxDimen: PROCEDURE = 
BEGIN C:SmallNumber;B:EightBits;
 C←CurChr;ScanEightBitInt[];B←CurVal;ScanOptionalEquals[];
ScanDimen[FALSE,FALSE,FALSE];
IF Eqtb↑[3822+B].Hh.Rh#0  THEN Mem[ INT[Eqtb↑[3822+B].Hh.Rh]+C]↑.Int←CurVal;
 END;--:1247----1257:-- NewFont: PROCEDURE[A: SmallNumber] = 
BEGIN 
 U:Halfword;S:Scaled;F:InternalFontNumber;T:StrNumber;
OldSetting:PascalInteger[0..21]; IF JobName=0  THEN OpenLogFile[];GetRToken[];
U←CurCs;
IF  INT[U]>=258  THEN T←Hash↑[U].Rh  ELSE IF  INT[U]>=129  THEN IF U=257  THEN T←1070
 ELSE T← INT[U]-129  ELSE BEGIN OldSetting←Selector;Selector←21;Print[1070];
Print[ INT[U]-1];Selector←OldSetting;
BEGIN IF  INT[PoolPtr+1]>PoolSize  THEN Overflow[129,PoolSize-InitPoolPtr]
; END;T←MakeString[]; END;
IF( INT[A]>=4) THEN GeqDefine[U,86,0] ELSE EqDefine[U,86,0];
ScanOptionalEquals[];ScanFileName[];--1258:--NameInProgress←TRUE;
IF ScanKeyword[1071] THEN--1259:--BEGIN ScanDimen[FALSE,FALSE,FALSE];
S←CurVal;
IF(S<=0)OR (S>=134217728) THEN BEGIN BEGIN IF Interaction=3  THEN NULL;
PrintNl[134];Print[1073]; END;PrintScaled[S];Print[1074];
BEGIN HelpPtr←2;HelpLine↑[1]←1075;HelpLine↑[0]←1076; END;Error[];
S←10*65536; END; END--:1259-- ELSE IF ScanKeyword[1072] THEN BEGIN ScanInt[];
S←-CurVal;
IF(CurVal<=0)OR (CurVal>32768) THEN BEGIN BEGIN IF Interaction=3  THEN NULL;
PrintNl[134];Print[414]; END;BEGIN HelpPtr←1;HelpLine↑[0]←415; END;
IntError[CurVal];S←-1000; END; END  ELSE S←-1000;
NameInProgress←FALSE--:1258--;--1260:
{FOR i:INT    IN [ INT[1 ].. INT[FontPtr ]] DO  F ← i; IF 
StrEqStr[FontName↑[F],CurName]AND StrEqStr[FontArea↑[F],CurArea] THEN BEGIN IF S>0  THEN BEGIN IF 
S=FontSize↑[F] THEN  GOTO Label50;
 END  ELSE IF FontSize↑[F]=XnOverD[FontDsize↑[F],-S,1000] THEN  GOTO Label50;
 END--:1260-- ENDLOOP;F←ReadFontInfo[U,CurName,CurArea,S];EXITS Label50 => NULL};Eqtb↑[U].Hh.Rh←F;
Eqtb↑[2768+F]←Eqtb↑[U];Hash↑[2768+F].Rh←T; END;--:1257----1265:
 NewInteraction: PROCEDURE = 
BEGIN PrintLn[];Interaction←CurChr;--75:
IF Interaction=0  THEN Selector←16  ELSE Selector←17--:75--;
IF JobName#0  THEN Selector←Selector+2; END;--:1265
 PrefixedCommand: PROCEDURE = 
BEGIN  A:SmallNumber;
F:InternalFontNumber;J:Halfword;K:PascalInteger[0..FontMemSize];P, Q:Halfword;
N:PascalInteger;E:PascalBoolean; A←0;
{WHILE CurCmd=92 DO BEGIN IF  NOT PascalODD[ A /CurChr] THEN A← INT[A]+CurChr;
--404:--DO GetXToken[]; IF(CurCmd#10)AND (CurCmd#0)--:404-- THEN EXIT; ENDLOOP;
IF  INT[CurCmd]<=69  THEN--1212:--BEGIN BEGIN IF Interaction=3  THEN NULL;
PrintNl[134];Print[1032]; END;PrintCmdChr[CurCmd,CurChr];
PrintChar[39];BEGIN HelpPtr←1;HelpLine↑[0]←1033; END;BackError[];
 GOTO Label10; END--:1212--; END ENDLOOP ;--1213:
IF(CurCmd#96)AND ( PascalMODPower2Mask[A ,3]#0) THEN BEGIN BEGIN IF Interaction=3  THEN NULL;
PrintNl[134];Print[544]; END;PrintEsc[1024];Print[1034];
PrintEsc[1025];Print[1035];PrintCmdChr[CurCmd,CurChr];
PrintChar[39];BEGIN HelpPtr←1;HelpLine↑[0]←1036; END;Error[]; END--:1213
;--1214:
IF Eqtb↑[4810].Int#0  THEN IF Eqtb↑[4810].Int<0  THEN BEGIN IF( INT[A]>=4) THEN A
←A-4; END  ELSE BEGIN IF NOT ( INT[A]>=4) THEN A←A+4; END--:1214--;
{SELECT CurCmd FROM--1217:
86 =>IF( INT[A]>=4) THEN GeqDefine[4078,119,CurChr] ELSE EqDefine[4078,119,
CurChr];--:1217----1218:
96 =>BEGIN IF  PascalODD[CurChr]AND NOT ( INT[A]>=4)AND (Eqtb↑[4810].Int>=0) THEN A←A+4;
E←( INT[CurChr]>=2);GetRToken[];P←CurCs;Q←ScanToks[TRUE,E];
IF( INT[A]>=4) THEN GeqDefine[P,110+( PascalMODPower2Mask[A ,3]),DefRef] ELSE EqDefine[P,110+( PascalMODPower2Mask[A
,3]),DefRef]; END;--:1218----1221:--93 =>BEGIN N←CurChr;GetRToken[];
P←CurCs;IF N=0  THEN BEGIN DO GetToken[]; IF CurCmd#10 THEN EXIT; ENDLOOP;
IF CurTok=3133  THEN BEGIN GetToken[];IF CurCmd=10  THEN GetToken[]; END;
 END  ELSE BEGIN GetToken[];Q←CurTok;GetToken[];BackInput[];CurTok←Q;
BackInput[]; END;
IF  INT[CurCmd]>=110  THEN Mem[CurChr]↑.Hh.Lh←Mem[CurChr]↑.Hh.Lh+1;
IF( INT[A]>=4) THEN GeqDefine[P,CurCmd,CurChr] ELSE EqDefine[P,CurCmd,
CurChr]; END;--:1221----1224:--94 =>BEGIN N←CurChr;GetRToken[];P←CurCs;
IF( INT[A]>=4) THEN GeqDefine[P,0,256] ELSE EqDefine[P,0,256];
ScanOptionalEquals[];SELECT N FROM 0 =>BEGIN ScanCharNum[];
IF( INT[A]>=4) THEN GeqDefine[P,67,CurVal] ELSE EqDefine[P,67,CurVal]; END;
1 =>BEGIN ScanFifteenBitInt[];
IF( INT[A]>=4) THEN GeqDefine[P,68,CurVal] ELSE EqDefine[P,68,CurVal]; END;
 ENDCASE =>BEGIN ScanEightBitInt[];
SELECT N FROM 0 =>IF( INT[A]>=4) THEN GeqDefine[P,67,CurVal] ELSE EqDefine[P,67,
CurVal];
1 =>IF( INT[A]>=4) THEN GeqDefine[P,68,CurVal] ELSE EqDefine[P,68,CurVal];
2 =>IF( INT[A]>=4) THEN GeqDefine[P,72,4817+CurVal] ELSE EqDefine[P,72,
4817+CurVal];
3 =>IF( INT[A]>=4) THEN GeqDefine[P,73,5221+CurVal] ELSE EqDefine[P,73,
5221+CurVal];
4 =>IF( INT[A]>=4) THEN GeqDefine[P,74,3044+CurVal] ELSE EqDefine[P,74,
3044+CurVal];
5 =>IF( INT[A]>=4) THEN GeqDefine[P,75,3300+CurVal] ELSE EqDefine[P,75,
3300+CurVal];
6 =>IF( INT[A]>=4) THEN GeqDefine[P,71,3566+CurVal] ELSE EqDefine[P,71,
3566+CurVal]; ENDCASE; END ; END;--:1224----1225:--95 =>BEGIN ScanInt[];N←CurVal;
IF  NOT ScanKeyword[700] THEN BEGIN BEGIN IF Interaction=3  THEN NULL;
PrintNl[134];Print[926]; END;BEGIN HelpPtr←2;HelpLine↑[1]←1053;
HelpLine↑[0]←1054; END;Error[]; END;GetRToken[];P←CurCs;ReadToks[N,P];
IF( INT[A]>=4) THEN GeqDefine[P,110,CurVal] ELSE EqDefine[P,110,CurVal]; END;
--:1225----1226:--70,71 =>BEGIN Q←CurCs;
IF CurCmd=70  THEN BEGIN ScanEightBitInt[];P←3566+CurVal;
 END  ELSE P←CurChr;ScanOptionalEquals[];--404:--DO GetXToken[];
 IF(CurCmd#10)AND (CurCmd#0)--:404-- THEN EXIT; ENDLOOP;IF CurCmd#1  THEN--1227:
BEGIN IF CurCmd=70  THEN BEGIN ScanEightBitInt[];CurCmd←71;
CurChr←3566+CurVal; END;
IF CurCmd=71  THEN BEGIN Q←Eqtb↑[CurChr].Hh.Rh;
IF Q=0  THEN IF( INT[A]>=4) THEN GeqDefine[P,100,0] ELSE EqDefine[P,100,0] ELSE
BEGIN Mem[Q]↑.Hh.Lh←Mem[Q]↑.Hh.Lh+1;
IF( INT[A]>=4) THEN GeqDefine[P,110,Q] ELSE EqDefine[P,110,Q]; END; GOTO Label30; END;
 END--:1227--;BackInput[];CurCs←Q;Q←ScanToks[FALSE,FALSE];
IF Mem[DefRef]↑.Hh.Rh=0  THEN BEGIN IF( INT[A]>=4) THEN GeqDefine[P,100,0] ELSE
EqDefine[P,100,0];BEGIN Mem[DefRef]↑.Hh.Rh←Avail;Avail←DefRef;
DynUsed←DynUsed-1; END;
 END  ELSE BEGIN IF P=3557  THEN BEGIN Mem[Q]↑.Hh.Rh←GetAvail[];
Q←Mem[Q]↑.Hh.Rh;Mem[Q]↑.Hh.Lh←637;Q←GetAvail[];Mem[Q]↑.Hh.Lh←379;
Mem[Q]↑.Hh.Rh←Mem[DefRef]↑.Hh.Rh;Mem[DefRef]↑.Hh.Rh←Q; END;
IF( INT[A]>=4) THEN GeqDefine[P,110,DefRef] ELSE EqDefine[P,110,DefRef]; END;
 END;--:1226----1228:--72 =>BEGIN P←CurChr;ScanOptionalEquals[];ScanInt[];
IF( INT[A]>=4) THEN GeqWordDefine[P,CurVal] ELSE EqWordDefine[P,CurVal];
 END;73 =>BEGIN P←CurChr;ScanOptionalEquals[];
ScanDimen[FALSE,FALSE,FALSE];
IF( INT[A]>=4) THEN GeqWordDefine[P,CurVal] ELSE EqWordDefine[P,CurVal];
 END;74,75 =>BEGIN P←CurChr;N←CurCmd;ScanOptionalEquals[];
IF N=75  THEN ScanGlue[3] ELSE ScanGlue[2];TrapZeroGlue[];
IF( INT[A]>=4) THEN GeqDefine[P,116,CurVal] ELSE EqDefine[P,116,CurVal]; END;
--:1228----1232:--84 =>BEGIN--1233:
IF CurChr=4127  THEN N←15  ELSE IF CurChr=4639  THEN N←32768  ELSE IF
CurChr=4511  THEN N←32767  ELSE IF CurChr=5073  THEN N←16777215  ELSE N
←127--:1233--;P←CurChr;ScanSevenBitInt[];P←P+CurVal;
ScanOptionalEquals[];ScanInt[];
IF((CurVal<0)AND ( INT[P]<5073))OR (CurVal>N) THEN BEGIN BEGIN IF Interaction=3
 THEN NULL;PrintNl[134];Print[1055]; END;PrintInt[CurVal];
IF  INT[P]<5073  THEN Print[1056] ELSE Print[1057];PrintInt[N];
BEGIN HelpPtr←1;HelpLine↑[0]←1058; END;Error[];CurVal←0; END;
IF  INT[P]<4639  THEN IF( INT[A]>=4) THEN GeqDefine[P,119,CurVal] ELSE EqDefine[P,
119,CurVal] ELSE IF  INT[P]<5073  THEN IF( INT[A]>=4) THEN GeqDefine[P,119,CurVal]
 ELSE EqDefine[P,119,CurVal] ELSE IF( INT[A]>=4) THEN GeqWordDefine[P,CurVal
] ELSE EqWordDefine[P,CurVal]; END;--:1232----1234:--85 =>BEGIN P←CurChr;
ScanFourBitInt[];P←P+CurVal;ScanOptionalEquals[];ScanFontIdent[];
IF( INT[A]>=4) THEN GeqDefine[P,119,CurVal] ELSE EqDefine[P,119,CurVal]; END;
--:1234----1235:--88,89,90,91 =>DoRegisterCommand[A];--:1235----1241:
97 =>BEGIN ScanEightBitInt[];
IF( INT[A]>=4) THEN SaveStack↑[SavePtr+0].Int←1073742080+CurVal  ELSE
SaveStack↑[SavePtr+0].Int←1073741824+CurVal;ScanOptionalEquals[];
ScanBox[]; END;--:1241----1242:--78 =>AlterAux[];79 =>AlterPrevGraf[];
80 =>AlterPageSoFar[];81 =>AlterInteger[];82 =>AlterBoxDimen[];--:1242----1248:
83 =>BEGIN ScanOptionalEquals[];ScanInt[];N←CurVal;
IF N<=0  THEN P←0  ELSE BEGIN P←GetNode[2*N+1];Mem[P]↑.Hh.Lh←N;
FOR i:INT    IN [ INT[1 ].. INT[N ]] DO  J ← i;  ScanDimen[FALSE,FALSE,FALSE];
Mem[P+ INT[2]*J-1]↑.Int←CurVal;ScanDimen[FALSE,FALSE,FALSE];
Mem[P+ INT[2]*J]↑.Int←CurVal; ENDLOOP; END;
IF( INT[A]>=4) THEN GeqDefine[3556,117,P] ELSE EqDefine[3556,117,P]; END;
--:1248----1252:--98 =>IF CurChr=1  THEN BEGIN NewPatterns[]; GOTO Label30;
BEGIN IF Interaction=3  THEN NULL;PrintNl[134];Print[1067]; END;HelpPtr←0;
Error[];DO GetToken[]; IF CurCmd=2 THEN EXIT; ENDLOOP; GOTO Label10;
 END  ELSE BEGIN NewHyphExceptions[]; GOTO Label30; END;--:1252----1253:
76 =>BEGIN FindFontDimen[TRUE];K←CurVal;ScanOptionalEquals[];
ScanDimen[FALSE,FALSE,FALSE];FontInfo↑[K].Int←CurVal; END;
77 =>BEGIN N←CurChr;ScanFontIdent[];F←CurVal;ScanOptionalEquals[];
ScanInt[];IF N=0  THEN HyphenChar↑[F]←CurVal  ELSE SkewChar↑[F]←CurVal;
 END;--:1253----1256:--87 =>NewFont[A];--:1256----1264:--99 =>NewInteraction[];
--:1264-- ENDCASE =>Confusion[1031];EXITS Label30 => NULL};--1269:
IF AfterToken#0  THEN BEGIN CurTok←AfterToken;BackInput[];
AfterToken←0; END--:1269--;EXITS Label10 => NULL}; END;--:1211----1270:-- 
 DoAssignments: PROCEDURE = 
BEGIN  {WHILE TRUE DO BEGIN--404:--DO GetXToken[];
 IF(CurCmd#10)AND (CurCmd#0)--:404-- THEN EXIT; ENDLOOP;IF  INT[CurCmd]<=69  THEN  GOTO Label10;
PrefixedCommand[]; END ENDLOOP ;EXITS Label10 => NULL}; END;--:1270----1275:-- OpenOrCloseIn: PROCEDURE
 = 
BEGIN C:PascalInteger[0..1];N:PascalInteger[0..15]; C←CurChr;ScanFourBitInt[];N←CurVal;
IF ReadOpen↑[N]#2  THEN BEGIN AClose[@ReadFile↑[N]];ReadOpen↑[N]←2; END;
IF C#0  THEN BEGIN ScanOptionalEquals[];ScanFileName[];
IF CurExt=210  THEN CurExt←647;
PackFileName[CurName,CurArea,CurExt];
IF AOpenIn[@ReadFile↑[N]] THEN ReadOpen↑[N]←1; END; END;--:1275----1279:
 IssueMessage: PROCEDURE = 
BEGIN OldSetting:PascalInteger[0..21];C:PascalInteger[0..1];S:StrNumber;
 C←CurChr;Mem[64988]↑.Hh.Rh←ScanToks[FALSE,TRUE];
OldSetting←Selector;Selector←21;TokenShow[DefRef];
Selector←OldSetting;FlushList[DefRef];
BEGIN IF  INT[PoolPtr+1]>PoolSize  THEN Overflow[129,PoolSize-InitPoolPtr]
; END;S←MakeString[];IF C=0  THEN--1280:
BEGIN IF TermOffset+( INT[StrStart↑[S+1]]-StrStart↑[S])>MaxPrintLine-2  THEN
PrintLn [] ELSE IF( INT[TermOffset]>0)OR ( INT[FileOffset]>0) THEN PrintChar[32];
Print[S];PascalTextBREAK[file: @TermOut]; END--:1280-- ELSE--1283:
BEGIN BEGIN IF Interaction=3  THEN NULL;PrintNl[134];Print[S]; END;
IF Eqtb↑[3565].Hh.Rh#0  THEN UseErrHelp←TRUE  ELSE IF LongHelpSeen
 THEN BEGIN HelpPtr←1;HelpLine↑[0]←1083;
 END  ELSE BEGIN IF  INT[Interaction]<3  THEN LongHelpSeen←TRUE;
BEGIN HelpPtr←4;HelpLine↑[3]←1084;HelpLine↑[2]←1085;
HelpLine↑[1]←1086;HelpLine↑[0]←1087; END; END;Error[];UseErrHelp←FALSE;
 END--:1283--;BEGIN StrPtr←StrPtr-1;PoolPtr←StrStart↑[StrPtr]; END;
 END;--:1279----1288:-- ShiftCase: PROCEDURE = 
BEGIN B:Halfword;P:Halfword;
T:Halfword;C:EightBits; B←CurChr;P←ScanToks[FALSE,FALSE];
P←Mem[DefRef]↑.Hh.Rh;WHILE P#0 DO BEGIN--1289:--T←Mem[P]↑.Hh.Lh;
IF  INT[T]<4225  THEN BEGIN IF  INT[T]>=4096  THEN T← INT[T]-1;C← PascalMODPower2Mask[T ,255];
IF  INT[C]<128  THEN IF Eqtb↑[ INT[B]+C].Hh.Rh#0  THEN T←256*( PascalDIVPower2[T ,8])+Eqtb↑[ INT[B]+C].Hh
.Rh;IF  INT[T]>=4096  THEN Mem[P]↑.Hh.Lh←T+1  ELSE Mem[P]↑.Hh.Lh←T; END--:1289--;
P←Mem[P]↑.Hh.Rh; END ENDLOOP ;BeginTokenList[Mem[DefRef]↑.Hh.Rh,3];
BEGIN Mem[DefRef]↑.Hh.Rh←Avail;Avail←DefRef;DynUsed←DynUsed-1; END;
 END;--:1288----1293:-- ShowWhatever: PROCEDURE = 
BEGIN  P:Halfword;
 {SELECT CurChr FROM 3 =>BEGIN BeginDiagnostic[];ShowActivities[]; END;
1 =>--1296:--BEGIN ScanEightBitInt[];BeginDiagnostic[];PrintNl[1105];
PrintInt[CurVal];PrintChar[61];
IF Eqtb↑[3822+CurVal].Hh.Rh=0  THEN Print[278] ELSE ShowBox[Eqtb↑[
3822+CurVal].Hh.Rh]; END--:1296--;0 =>--1294:--BEGIN GetToken[];PrintNl[1099];
IF CurCs#0  THEN BEGIN SprintCs[CurCs];PrintChar[61]; END;
PrintMeaning[]; GOTO Label50; END--:1294--; ENDCASE =>--1297:--BEGIN P←TheToks[];
PrintNl[1099];TokenShow[64997];FlushList[Mem[64997]↑.Hh.Rh]; GOTO Label50;
 END--:1297--;--1298:--EndDiagnostic[TRUE];BEGIN IF Interaction=3  THEN NULL;
PrintNl[134];Print[1106]; END;
IF Selector=19  THEN IF Eqtb↑[4796].Int<=0  THEN BEGIN Selector←17;
Print[1107];Selector←19; END--:1298--;
EXITS Label50 => NULL};IF  INT[Interaction]<3  THEN BEGIN HelpPtr←0;ErrorCount←ErrorCount-1;
 END  ELSE IF Eqtb↑[4796].Int>0  THEN BEGIN BEGIN HelpPtr←3;
HelpLine↑[2]←1094;HelpLine↑[1]←1095;HelpLine↑[0]←1096; END;
 END  ELSE BEGIN BEGIN HelpPtr←5;HelpLine↑[4]←1094;HelpLine↑[3]←1095;
HelpLine↑[2]←1096;HelpLine↑[1]←1097;HelpLine↑[0]←1098; END; END;Error[];
 END;--:1293----1302:-- 
 GiveErrHelp: PROCEDURE
 = 
BEGIN TokenShow[Eqtb↑[3565].Hh.Rh]; END;--:1284----1303:----524:
 TheRealTex: PROCEDURE = 
BEGIN --1337:
 {ENABLE Error9999 => GOTO Label9999;{ENABLE Error9998 => GOTO Label9998;History←3;RewriteTermOut[@TermOut];
SetBackgroundPriority[];--14:--Bad←0;
IF( INT[HalfErrorLine]<30)OR ( INT[HalfErrorLine]>ErrorLine-15) THEN Bad←1;
IF  INT[MaxPrintLine]<60  THEN Bad←2;IF  PascalMODPower2Mask[DviBufSize ,7]#0  THEN Bad←3;
IF  INT[1100]>65000  THEN Bad←4;IF  INT[2129]>2500  THEN Bad←5;--:14----111:
IF(MemMin#0)OR (MemMax#65000) THEN Bad←10;
IF( INT[MemMin]>0)OR ( INT[MemMax]<65000) THEN Bad←10;
IF( INT[0]>0)OR ( INT[255]<127) THEN Bad←11;IF( INT[0]>0)OR ( INT[65515]<32767) THEN Bad←12;
IF( INT[0]<0)OR ( INT[255]>65515) THEN Bad←13;
IF( INT[MemMin]<0)OR ( INT[MemMax]>=65515) THEN Bad←14;
IF( INT[0]<0)OR ( INT[FontMax]>255) THEN Bad←15;IF  INT[FontMax]>256  THEN Bad←16;
IF( INT[SaveSize]>65515)OR ( INT[MaxStrings]>65515) THEN Bad←17;
IF  INT[BufSize]>65515  THEN Bad←18;IF  INT[255]<255  THEN Bad←19;--:111----290:
IF  INT[7121]>65515  THEN Bad←21;--:290----1249:
IF  INT[2]*65515<65000-MemMin  THEN Bad←41;--:1249
IF Bad>0  THEN BEGIN RewriteTermOut[@TermOut];
{PascalWriteLongString[file: @TermOut, item: "Ouch---my internal constants have been"]
; PascalWriteLongString[file: @TermOut, item: " clobbered!---case "]; PascalWriteInteger[file: @TermOut, item: Bad, fieldMinLength: 1]}; ERROR Error9999; END;Initialize[];
IF StartLikeInitex  THEN BEGIN IF  NOT GetStringsStarted [] THEN 
ERROR Error9999;InitPrim[]; END;--55:--Selector←17;Tally←0;TermOffset←0;
FileOffset←0;--:55----61:
PascalWriteLongString[file: @TermOut, item: "This is TeX 1.3 for Cedar 6.0"];
IF FormatIdent=0  THEN {PascalWriteLongString[file: @TermOut, item: " (no format preloaded)"]; PascalWriteLn[file: @TermOut]} ELSE
BEGIN Print[FormatIdent];PrintLn[]; END;--:61----528:--JobName←0;
NameInProgress←FALSE;--:528----533:--OutputFileName←0;--:533--BEGIN--331:--BEGIN InputPtr←0;MaxInStack←0;InOpen←0;
MaxBufStack←0;ParamPtr←0;MaxParamStack←0;
FOR i:INT    IN [ INT[0 ].. INT[BufSize ]] DO  First ← i; Buffer↑[First]←0 ENDLOOP;ScannerStatus←0;
WarningIndex←0;First←1;CurInput.StateField←33;
CurInput.StartField←1;CurInput.IndexField←0;Line←0;
CurInput.NameField←0;ForceEof←FALSE;AlignState←1000000;
IF  NOT InitTerminal [] THEN  ERROR Error9999;CurInput.LimitField←Last;
First←Last+1; END--:331--;
IF(FormatIdent=0)OR (Buffer↑[CurInput.LocField]=38) THEN BEGIN IF
FormatIdent#0  THEN Initialize[];IF  NOT OpenFmtFile [] THEN  ERROR Error9999;
IF  NOT LoadFmtFile [] THEN BEGIN WClose[@FmtFile]; ERROR Error9999; END;
WClose[@FmtFile];
WHILE( INT[CurInput.LocField]<CurInput.LimitField)AND (Buffer↑[CurInput.
LocField]=32)DO CurInput.LocField←CurInput.LocField+1 ENDLOOP ; END;
IF(Eqtb↑[4815].Int<0)OR (Eqtb↑[4815].Int>127) THEN CurInput.LimitField←
 INT[CurInput.LimitField]-1  ELSE Buffer↑[CurInput.LimitField]←Eqtb↑[4815].
Int;FixDateAndTime[];--765:--MagicOffset← INT[StrStart↑[750]]-9*16--:765--;
--75:--IF Interaction=0  THEN Selector←16  ELSE Selector←17--:75--;
ReadProfileForDirectories[];
IF( INT[CurInput.LocField]<CurInput.LimitField)AND (Eqtb↑[4127+Buffer↑
[CurInput.LocField]].Hh.Rh#0) THEN StartInput[]; END--:1337--;
InitStrPtr←StrPtr;InitPoolPtr←PoolPtr;History←0;MainControl[];
FinalCleanup[];EXITS Label9998 => NULL};CloseFilesAndTerminate[];EXITS Label9999 => NULL};SetNormalPriority[];
 END;
END.