-- file: WeavePhaseI.mesa
-- Pascal-to-Mesa translator output, translated at September 23, 1986 1:27:38 pm PDT
DIRECTORY
PascalBasic,
PascalWizardFiles,
WeaveProcs,
WeaveVars;
WeavePhaseI: PROGRAM IMPORTS PascalWizardFiles, WeaveProcs, WeaveVars EXPORTS WeaveProcs = PUBLIC
BEGIN OPEN PascalBasic, PascalWizardFiles, WeaveProcs, WeaveVars;
PascalXref: PROCEDURE =
BEGIN P:NamePointer;
{WHILE INT[NextControl]<143 DO BEGIN IF( INT[NextControl]>=130)AND (
INT[NextControl]<=133) THEN BEGIN P←IdLookup[NextControl-130];NewXref[P];
IF(Ilk↑[P]=17)OR (Ilk↑[P]=22) THEN XrefSwitch←10240; END;
NextControl←GetNext[];
IF(NextControl=124)OR (NextControl=123) THEN GOTO Label10; END ENDLOOP ;EXITS Label10 => NULL}; END;--:112
--113:-- OuterXref: PROCEDURE =
BEGIN Bal:EightBits;
WHILE INT[NextControl]<143 DO IF NextControl#123 THEN PascalXref
[] ELSE BEGIN Bal←SkipComment[1];NextControl←124;
WHILE INT[Bal]>0 DO BEGIN PascalXref[];
IF NextControl=124 THEN Bal←SkipComment[Bal] ELSE Bal←0; END ENDLOOP ; END ENDLOOP ; END;
--:113----120:-- ModCheck: PROCEDURE[P: NamePointer]
=
BEGIN IF INT[P]>0 THEN BEGIN ModCheck[Link↑[P]];CurXref←Xref↑[P];
IF INT[Xmem↑[CurXref].NumField]<10240 THEN BEGIN BEGIN PascalWriteLn[file: @TermOut];
PascalWriteLongString[file: @TermOut, item: "! Never defined: <"]; END;PrintId[P];
PascalWriteLongString[file: @TermOut, item: ">"];IF History=0 THEN History←1; END;
WHILE INT[Xmem↑[CurXref].NumField]>=10240 DO CurXref←Xmem↑[CurXref].
XlinkField ENDLOOP ;IF CurXref=0 THEN BEGIN BEGIN PascalWriteLn[file: @TermOut];
PascalWriteLongString[file: @TermOut, item: "! Never used: <"]; END;PrintId[P];PascalWriteLongString[file: @TermOut, item: ">"];
IF History=0 THEN History←1; END;ModCheck[Ilk↑[P]]; END; END;--:120----123:
PhaseI: PROCEDURE =
BEGIN--110:-- PhaseOne←TRUE;PhaseThree←FALSE;
ResetInput[];ModuleCount←0;SkipLimbo[];ChangeExists←FALSE;
WHILE NOT InputHasEnded DO--111:--BEGIN ModuleCount←ModuleCount+1;
IF ModuleCount=MaxModules THEN BEGIN PascalWriteLn[file: @TermOut];
{PascalWriteLongString[file: @TermOut, item: "! Sorry, "]; PascalWriteLongString[file: @TermOut, item: "section number"]; PascalWriteLongString[file: @TermOut, item: " capacity exceeded"]};Error[];
History←3;JumpOut[]; END;ChangedModule↑[ModuleCount]←FALSE;
IF Buffer↑[Loc-1]=42 THEN BEGIN {PascalWriteLongString[file: @TermOut, item: "*"]; PascalWriteInteger[file: @TermOut, item: ModuleCount, fieldMinLength: 1]};
PascalTextBREAK[file: @TermOut]; END;--114:--DO NextControl←SkipTex[];
SELECT NextControl FROM 126 =>XrefSwitch←10240;125 =>XrefSwitch←0;
124 =>PascalXref[];131,132,133,146 =>BEGIN Loc←Loc-2;NextControl←GetNext[];
IF NextControl#146 THEN NewXref[IdLookup[NextControl-130]]; END;
ENDCASE => NULL; IF INT[NextControl]>=143--:114-- THEN EXIT; ENDLOOP;--116:
WHILE INT[NextControl]<=144 DO BEGIN XrefSwitch←10240;
IF NextControl=144 THEN NextControl←GetNext [] ELSE--117:
BEGIN NextControl←GetNext[];
IF NextControl=130 THEN BEGIN Lhs←IdLookup[0];Ilk↑[Lhs]←0;
NewXref[Lhs];NextControl←GetNext[];
IF NextControl=30 THEN BEGIN NextControl←GetNext[];
IF NextControl=130 THEN BEGIN Rhs←IdLookup[0];Ilk↑[Lhs]←Ilk↑[Rhs];
Ilk↑[Rhs]←0;NewXref[Rhs];Ilk↑[Rhs]←Ilk↑[Lhs];NextControl←GetNext[]; END;
END; END; END--:117--;OuterXref[]; END--:116-- ENDLOOP ;--118:
IF INT[NextControl]<=146 THEN BEGIN IF NextControl=145 THEN ModXrefSwitch
←0 ELSE ModXrefSwitch←10240;
DO IF NextControl=146 THEN NewModXref[CurModule];
NextControl←GetNext[];OuterXref[]; IF INT[NextControl]>146 THEN EXIT; ENDLOOP; END--:118--;
IF ChangedModule↑[ModuleCount] THEN ChangeExists←TRUE; END--:111-- ENDLOOP ;
ChangedModule↑[ModuleCount]←ChangeExists;PhaseOne←FALSE;--121:
ModCheck[Ilk↑[0]]--:121--;--:110-- END;
END.