-- file: TexScanImpl.mesa
-- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:37 am PDT
DIRECTORY
PascalBasic,
PascalWizardFiles,
TexTypes,
TexSysdep,
TexSysdepInline,
TexInteraction,
TexBuildPage,
TexMemory,
TexSymbols,
TexScan,
TexOps,
TexRest;
TexScanImpl: PROGRAM IMPORTS TexSysdepInline, TexInteraction, TexMemory, TexSymbols, TexScan EXPORTS TexScan = PUBLIC
BEGIN OPEN PascalBasic, PascalWizardFiles, TexTypes, TexSysdep, TexSysdepInline, TexInteraction, TexBuildPage, TexMemory, TexSymbols, TexScan, TexOps, TexRest;
JobName: StrNumber;
--:527----532:--
DviFile: ByteFile;
OutputFileName: StrNumber;
ScanLeftBrace: PROCEDURE =
BEGIN--404:
DO GetXToken[]; IF(CurCmd#10)AND (CurCmd#0)--:404-- THEN EXIT; ENDLOOP;
IF CurCmd#1 THEN BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];
Print[518]; END;BEGIN HelpPtr←4;HelpLine↑[3]←519;HelpLine↑[2]←520;
HelpLine↑[1]←521;HelpLine↑[0]←522; END;BackError[];CurTok←379;
CurCmd←1;CurChr←123;AlignState←AlignState+1; END; END;--:403----405:
ScanOptionalEquals: PROCEDURE =
BEGIN--406:--DO GetXToken[];
IF CurCmd#10--:406-- THEN EXIT; ENDLOOP;IF CurTok#3133 THEN BackInput[]; END;--:405
--407:-- ScanKeyword: PROCEDURE[S: StrNumber] RETURNS[ScanKeywordResult: PascalBoolean] =
BEGIN
P:Halfword;Q:Halfword;K:PoolPointer; P←64987;Mem[P]↑.Hh.Rh←0;
K←StrStart↑[S];{WHILE INT[K]<StrStart↑[S+1]DO BEGIN GetXToken[];
IF(CurCs=0)AND ((CurChr=StrPool↑[K])OR (CurChr=StrPool↑[K]-32)) THEN
BEGIN BEGIN Q←GetAvail[];Mem[P]↑.Hh.Rh←Q;Mem[Q]↑.Hh.Lh←CurTok;P←Q; END;
K←K+1; END ELSE IF(CurCmd#10)OR (P#64987) THEN BEGIN BackInput[];
IF P#64987 THEN BeginTokenList[Mem[64987]↑.Hh.Rh,3];
ScanKeywordResult←FALSE; GOTO Label10; END; END ENDLOOP ;FlushList[Mem[64987]↑.Hh.Rh];
ScanKeywordResult←TRUE;EXITS Label10 => NULL}; END;--:407----408:-- MuError: PROCEDURE
=
BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[523]; END;
BEGIN HelpPtr←1;HelpLine↑[0]←524; END;Error[]; END;--:408----409:
--432:-- ScanSevenBitInt: PROCEDURE
=
BEGIN ScanInt[];
IF(CurVal<0)OR (CurVal>127) THEN BEGIN BEGIN IF Interaction=3 THEN NULL;
PrintNl[134];Print[546]; END;BEGIN HelpPtr←2;HelpLine↑[1]←547;
HelpLine↑[0]←548; END;IntError[CurVal];CurVal←0; END; END;--:432----433:
ScanEightBitInt: PROCEDURE =
BEGIN ScanInt[];
IF(CurVal<0)OR (CurVal>255) THEN BEGIN BEGIN IF Interaction=3 THEN NULL;
PrintNl[134];Print[549]; END;BEGIN HelpPtr←2;HelpLine↑[1]←550;
HelpLine↑[0]←548; END;IntError[CurVal];CurVal←0; END; END;--:433----434:
ScanFourBitInt: PROCEDURE =
BEGIN ScanInt[];
IF(CurVal<0)OR (CurVal>15) THEN BEGIN BEGIN IF Interaction=3 THEN NULL;
PrintNl[134];Print[551]; END;BEGIN HelpPtr←2;HelpLine↑[1]←552;
HelpLine↑[0]←548; END;IntError[CurVal];CurVal←0; END; END;--:434----435:
ScanCharNum: PROCEDURE =
BEGIN ScanInt[];
IF(CurVal<0)OR (CurVal>255) THEN BEGIN BEGIN IF Interaction=3 THEN NULL;
PrintNl[134];Print[546]; END;BEGIN HelpPtr←2;HelpLine↑[1]←553;
HelpLine↑[0]←548; END;IntError[CurVal];CurVal←0; END; END;--:435----436:
ScanFifteenBitInt: PROCEDURE =
BEGIN ScanInt[];
IF(CurVal<0)OR (CurVal>32767) THEN BEGIN BEGIN IF Interaction=3 THEN NULL;
PrintNl[134];Print[554]; END;BEGIN HelpPtr←2;HelpLine↑[1]←555;
HelpLine↑[0]←548; END;IntError[CurVal];CurVal←0; END; END;--:436----437:
ScanTwentySevenBitInt: PROCEDURE =
BEGIN ScanInt[];
IF(CurVal<0)OR (CurVal>134217727) THEN BEGIN BEGIN IF Interaction=3 THEN
NULL;PrintNl[134];Print[556]; END;BEGIN HelpPtr←2;HelpLine↑[1]←557;
HelpLine↑[0]←548; END;IntError[CurVal];CurVal←0; END; END;--:437----577:
ScanInt: PROCEDURE =
BEGIN Negative:PascalBoolean;M:PascalInteger;
D:SmallNumber;Vacuous:PascalBoolean;OkSoFar:PascalBoolean; Radix←0;
OkSoFar←TRUE;--441:--Negative←FALSE;DO--406:--DO GetXToken[];
IF CurCmd#10--:406-- THEN EXIT; ENDLOOP;
IF CurTok=3117 THEN BEGIN Negative← NOT Negative;CurTok←3115; END;
IF CurTok#3115--:441-- THEN EXIT; ENDLOOP;IF CurTok=3168 THEN--442:--BEGIN GetToken[];
IF INT[CurTok]<4096 THEN BEGIN CurVal←CurChr;
IF INT[CurCmd]<=2 THEN IF CurCmd=2 THEN AlignState←AlignState+1 ELSE
AlignState←AlignState-1;
END ELSE IF INT[CurTok]<4225 THEN CurVal← INT[CurTok]-4097 ELSE CurVal←
INT[CurTok]-4225;IF CurVal>127 THEN BEGIN BEGIN IF Interaction=3 THEN NULL;
PrintNl[134];Print[558]; END;BEGIN HelpPtr←2;HelpLine↑[1]←559;
HelpLine↑[0]←560; END;CurVal←48;BackError[]; END ELSE--443:
BEGIN GetXToken[];IF CurCmd#10 THEN BackInput[]; END--:443--; END--:442
ELSE IF( INT[CurCmd]>=67)AND ( INT[CurCmd]<=88) THEN ScanSomethingInternal[0,FALSE
] ELSE--444:--BEGIN
Radix←10;M←214748364;
IF CurTok=3111 THEN BEGIN Radix←8;M←268435456;GetXToken[];
END ELSE IF CurTok=3106 THEN BEGIN Radix←16;M←134217728;GetXToken[];
END;Vacuous←TRUE;CurVal←0;--445:
{WHILE TRUE DO BEGIN IF( INT[CurTok]<3120+Radix)AND ( INT[CurTok]>=3120)AND ( INT[CurTok
]<=3129) THEN D← INT[CurTok]-3120 ELSE IF Radix=16 THEN IF( INT[CurTok]<=2886)AND (
INT[CurTok]>=2881) THEN D← INT[CurTok]-2871 ELSE IF( INT[CurTok]<=3142)AND (
INT[CurTok]>=3137) THEN D← INT[CurTok]-3127 ELSE GOTO Label30 ELSE GOTO Label30;Vacuous←FALSE;
IF(CurVal>=M)AND ((CurVal>M)OR ( INT[D]>7)OR (Radix#10)) THEN BEGIN IF
OkSoFar THEN BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];
Print[561]; END;BEGIN HelpPtr←2;HelpLine↑[1]←562;HelpLine↑[0]←563;
END;Error[];CurVal←2147483647;OkSoFar←FALSE; END;
END ELSE CurVal←CurVal*Radix+D;GetXToken[]; END ENDLOOP ;EXITS Label30 => NULL};--:445--IF Vacuous THEN--446:--BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];
Print[525]; END;BEGIN HelpPtr←3;HelpLine↑[2]←526;HelpLine↑[1]←527;
HelpLine↑[0]←528; END;BackError[]; END--:446
ELSE IF CurCmd#10 THEN BackInput[]; END--:444--;
IF Negative THEN CurVal←-CurVal; END;--:440----448:
END.