-- file: WeavePhaseII.mesa -- Pascal-to-Mesa translator output, translated at September 23, 1986 1:27:38 pm PDT DIRECTORY PascalBasic, PascalWizardFiles, WeaveProcs, WeaveVars; WeavePhaseII: PROGRAM IMPORTS PascalWizardFiles, WeaveProcs, WeaveVars EXPORTS WeaveProcs = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, WeaveProcs, WeaveVars; FinishPascal: PROCEDURE = BEGIN P:TextPointer; BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←92;IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←80; END; BEGIN IF INT[TokPtr+2]>MaxToks THEN BEGIN PascalWriteLn[file: @TermOut]; {PascalWriteLongString[file: @TermOut, item: "! Sorry, "]; PascalWriteLongString[file: @TermOut, item: "token"]; PascalWriteLongString[file: @TermOut, item: " capacity exceeded"]};Error[]; History←3;JumpOut[]; END;TokMem↑[TokPtr]←141;TokPtr←TokPtr+1; END; AppComment[];P←Translate[];TokMem↑[TokPtr]←P+40960;TokPtr←TokPtr+1; MakeOutput[]; IF INT[OutPtr]>1 THEN IF OutBuf↑[OutPtr-1]=92 THEN IF OutBuf↑[OutPtr]=54 THEN OutPtr←OutPtr-2 ELSE IF OutBuf↑[OutPtr]=55 THEN OutBuf↑[OutPtr ]←89;BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←92;IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←112; IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←97;IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←114; END;FinishLine[]; --IF TEXT←PTR>MAX←TXT←PTR THEN MAX←TXT←PTR:=TEXT←PTR; -- IF TOK←PTR>MAX←TOK←PTR THEN MAX←TOK←PTR:=TOK←PTR; -- IF SCRAP←PTR>MAX←SCR←PTR THEN MAX←SCR←PTR:=SCRAP←PTR;--TokPtr←1; TextPtr←1;ScrapPtr←0; END;--:227----237: Footnote: PROCEDURE[Flag: SixteenBits] = BEGIN Q:XrefNumber; {IF INT[Xmem↑[CurXref].NumField]<=Flag THEN GOTO Label10;FinishLine[]; BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←92; END; IF Flag=0 THEN BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←85; END ELSE BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←65; END;BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←32; IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←115;IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←101; IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←99; END;BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←116; IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←105;IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←111; IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←110; END;--238:--Q←CurXref; IF INT[Xmem↑[Xmem↑[Q].XlinkField].NumField]>Flag THEN BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1;OutBuf↑[OutPtr]←115; END; BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←126; END; {WHILE TRUE DO BEGIN OutMod[ INT[Xmem↑[CurXref].NumField]-Flag]; CurXref←Xmem↑[CurXref].XlinkField; IF INT[Xmem↑[CurXref].NumField]<=Flag THEN GOTO Label30; IF( INT[Xmem↑[Xmem↑[CurXref].XlinkField].NumField]>Flag)OR (CurXref#Xmem↑[Q]. XlinkField) THEN BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←44; END; BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←32; END; IF INT[Xmem↑[Xmem↑[CurXref].XlinkField].NumField]<=Flag THEN BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←97;IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←110; IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←100;IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←126; END; END ENDLOOP ;EXITS Label30 => NULL};--:238--BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←46; END;EXITS Label10 => NULL}; END;--:237----250: PhaseIi: PROCEDURE = BEGIN ModCountPlusDefFlag:SixteenBits;--219:--ResetInput[]; BEGIN PascalWriteLn[file: @TermOut];PascalWriteLongString[file: @TermOut, item: "Writing the output file..."]; END;ModuleCount←0;CopyLimbo[];FinishLine[];FlushBuffer[0,FALSE]; WHILE NOT InputHasEnded DO--221:--BEGIN ModuleCount←ModuleCount+1; --222:--BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←92; END; IF Buffer↑[Loc-1]#42 THEN BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←77; END ELSE BEGIN BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←78; END; {PascalWriteLongString[file: @TermOut, item: "*"]; PascalWriteInteger[file: @TermOut, item: ModuleCount, fieldMinLength: 1]};PascalTextBREAK[file: @TermOut]; END; OutMod[ModuleCount];BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←46; IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←32; END--:222--;SaveLine←OutLine;SavePlace←OutPtr; --223:--DO NextControl←CopyTex[]; SELECT NextControl FROM 124 =>BEGIN StackPtr←0;CurState.ModeField←1; OutputPascal[]; END;64 =>BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←64; END;12 =>--224: BEGIN BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←92;IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←79; IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←123; END; WHILE( INT[Buffer↑[Loc]]>=48)AND ( INT[Buffer↑[Loc]]<=55)DO BEGIN BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←Buffer↑[Loc]; END;Loc←Loc+1; END ENDLOOP ; BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←125; END; END--:224--;13 =>--225: BEGIN BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←92;IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←72; IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←123; END; WHILE(( INT[Buffer↑[Loc]]>=48)AND ( INT[Buffer↑[Loc]]<=57))OR (( INT[Buffer↑[Loc]]>=65)AND ( INT[Buffer↑[Loc]]<=70))DO BEGIN BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←Buffer↑[Loc]; END;Loc←Loc+1; END ENDLOOP ; BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←125; END; END--:225--; 134,131,132,133,146 =>BEGIN Loc←Loc-2;NextControl←GetNext[]; IF NextControl=134 THEN BEGIN IF NOT PhaseOne THEN BEGIN PascalWriteLn[file: @TermOut];PascalWriteLongString[file: @TermOut, item: "! TeX string should be in Pascal text only"]; Error[]; END; END; END; 9,10,135,137,138,139,140,141,136,142 =>BEGIN IF NOT PhaseOne THEN BEGIN PascalWriteLn[file: @TermOut];PascalWriteLongString[file: @TermOut, item: "! You can't do that in TeX text"]; Error[]; END; END; ENDCASE => NULL; IF INT[NextControl]>=143--:223-- THEN EXIT; ENDLOOP;--226: IF INT[NextControl]<=144 THEN BEGIN IF(SaveLine#OutLine)OR ( SavePlace#OutPtr) THEN BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←92; IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←89; END;SaveLine←OutLine;SavePlace←OutPtr; END; WHILE INT[NextControl]<=144 DO BEGIN StackPtr←0;CurState.ModeField←1; IF NextControl=144 THEN--228:--BEGIN BEGIN TokMem↑[TokPtr]←92; TokPtr←TokPtr+1;TokMem↑[TokPtr]←68;TokPtr←TokPtr+1; ScrapPtr←ScrapPtr+1;Cat↑[ScrapPtr]←3;Trans↑[ScrapPtr]←TextPtr; TextPtr←TextPtr+1;TokStart↑[TextPtr]←TokPtr; END; NextControl←GetNext[]; IF NextControl#130 THEN BEGIN IF NOT PhaseOne THEN BEGIN PascalWriteLn[file: @TermOut];PascalWriteLongString[file: @TermOut, item: "! Improper macro definition"];Error[]; END; END ELSE BEGIN TokMem↑[TokPtr]←10240+IdLookup[0];TokPtr←TokPtr+1; ScrapPtr←ScrapPtr+1;Cat↑[ScrapPtr]←2;Trans↑[ScrapPtr]←TextPtr; TextPtr←TextPtr+1;TokStart↑[TextPtr]←TokPtr; END; NextControl←GetNext[]; END--:228-- ELSE--229: BEGIN BEGIN TokMem↑[TokPtr]←92;TokPtr←TokPtr+1; TokMem↑[TokPtr]←70;TokPtr←TokPtr+1;ScrapPtr←ScrapPtr+1; Cat↑[ScrapPtr]←3;Trans↑[ScrapPtr]←TextPtr;TextPtr←TextPtr+1; TokStart↑[TextPtr]←TokPtr; END;NextControl←GetNext[]; IF NextControl=130 THEN BEGIN BEGIN TokMem↑[TokPtr]←10240+IdLookup[0 ];TokPtr←TokPtr+1;ScrapPtr←ScrapPtr+1;Cat↑[ScrapPtr]←2; Trans↑[ScrapPtr]←TextPtr;TextPtr←TextPtr+1; TokStart↑[TextPtr]←TokPtr; END;NextControl←GetNext[]; IF NextControl=30 THEN BEGIN BEGIN TokMem↑[TokPtr]←92; TokPtr←TokPtr+1;TokMem↑[TokPtr]←83;TokPtr←TokPtr+1; ScrapPtr←ScrapPtr+1;Cat↑[ScrapPtr]←2;Trans↑[ScrapPtr]←TextPtr; TextPtr←TextPtr+1;TokStart↑[TextPtr]←TokPtr; END; NextControl←GetNext[]; IF NextControl=130 THEN BEGIN BEGIN TokMem↑[TokPtr]←10240+IdLookup[0 ];TokPtr←TokPtr+1;ScrapPtr←ScrapPtr+1;Cat↑[ScrapPtr]←2; Trans↑[ScrapPtr]←TextPtr;TextPtr←TextPtr+1; TokStart↑[TextPtr]←TokPtr; END;BEGIN ScrapPtr←ScrapPtr+1; Cat↑[ScrapPtr]←9;Trans↑[ScrapPtr]←0; END;NextControl←GetNext[]; END; END; END; IF ScrapPtr#5 THEN BEGIN IF NOT PhaseOne THEN BEGIN PascalWriteLn[file: @TermOut];PascalWriteLongString[file: @TermOut, item: "! Improper format definition"];Error[]; END; END; END--:229--; OuterParse[];FinishPascal[]; END--:226-- ENDLOOP ;--231:--ThisModule←0; IF INT[NextControl]<=146 THEN BEGIN IF(SaveLine#OutLine)OR ( SavePlace#OutPtr) THEN BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←92; IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←89; END;StackPtr←0;CurState.ModeField←1; IF NextControl=145 THEN NextControl←GetNext [] ELSE BEGIN ThisModule← CurModule;--232:--DO NextControl←GetNext[]; IF NextControl#43 THEN EXIT; ENDLOOP; IF(NextControl#61)AND (NextControl#30) THEN BEGIN IF NOT PhaseOne THEN BEGIN PascalWriteLn[file: @TermOut]; PascalWriteLongString[file: @TermOut, item: "! You need an = sign after the section name"];Error[]; END; END ELSE NextControl←GetNext[]; IF INT[OutPtr]>1 THEN IF(OutBuf↑[OutPtr]=89)AND (OutBuf↑[OutPtr-1]=92) THEN BEGIN TokMem↑[TokPtr]←139;TokPtr←TokPtr+1; END; BEGIN TokMem↑[TokPtr]←30720+ThisModule;TokPtr←TokPtr+1; ScrapPtr←ScrapPtr+1;Cat↑[ScrapPtr]←22;Trans↑[ScrapPtr]←TextPtr; TextPtr←TextPtr+1;TokStart↑[TextPtr]←TokPtr; END; CurXref←Xref↑[ThisModule];ModCountPlusDefFlag←ModuleCount+10240; IF Xmem↑[CurXref].NumField#ModCountPlusDefFlag THEN BEGIN BEGIN TokMem↑[TokPtr]←132;TokPtr←TokPtr+1;TokMem↑[TokPtr]←43; TokPtr←TokPtr+1;TokMem↑[TokPtr]←125;TokPtr←TokPtr+1; ScrapPtr←ScrapPtr+1;Cat↑[ScrapPtr]←2;Trans↑[ScrapPtr]←TextPtr; TextPtr←TextPtr+1;TokStart↑[TextPtr]←TokPtr; END;ThisModule←0; END;BEGIN TokMem↑[TokPtr]←92;TokPtr←TokPtr+1;TokMem↑[TokPtr]←83; TokPtr←TokPtr+1;ScrapPtr←ScrapPtr+1;Cat↑[ScrapPtr]←2; Trans↑[ScrapPtr]←TextPtr;TextPtr←TextPtr+1; TokStart↑[TextPtr]←TokPtr; END;BEGIN TokMem↑[TokPtr]←141; TokPtr←TokPtr+1;ScrapPtr←ScrapPtr+1;Cat↑[ScrapPtr]←9; Trans↑[ScrapPtr]←TextPtr;TextPtr←TextPtr+1; TokStart↑[TextPtr]←TokPtr; END;--:232-- END; WHILE INT[NextControl]<=146 DO BEGIN OuterParse[];--233: IF INT[NextControl]<146 THEN BEGIN BEGIN IF NOT PhaseOne THEN BEGIN PascalWriteLn[file: @TermOut];PascalWriteLongString[file: @TermOut, item: "! You can't do that in Pascal text"];Error[]; END; END;NextControl←GetNext[]; END ELSE IF NextControl=146 THEN BEGIN BEGIN TokMem↑[TokPtr]← 30720+CurModule;TokPtr←TokPtr+1;ScrapPtr←ScrapPtr+1;Cat↑[ScrapPtr]←22; Trans↑[ScrapPtr]←TextPtr;TextPtr←TextPtr+1; TokStart↑[TextPtr]←TokPtr; END;NextControl←GetNext[]; END--:233--; END ENDLOOP ; FinishPascal[]; END--:231--;--234:--IF INT[ThisModule]>0 THEN BEGIN--236: FirstXref←Xref↑[ThisModule];ThisXref←Xmem↑[FirstXref].XlinkField; IF INT[Xmem↑[ThisXref].NumField]>10240 THEN BEGIN MidXref←ThisXref; CurXref←0;DO NextXref←Xmem↑[ThisXref].XlinkField; Xmem↑[ThisXref].XlinkField←CurXref;CurXref←ThisXref; ThisXref←NextXref; IF INT[Xmem↑[ThisXref].NumField]<=10240 THEN EXIT; ENDLOOP; Xmem↑[FirstXref].XlinkField←CurXref; END ELSE MidXref←0;CurXref←0; WHILE ThisXref#0 DO BEGIN NextXref←Xmem↑[ThisXref].XlinkField; Xmem↑[ThisXref].XlinkField←CurXref;CurXref←ThisXref; ThisXref←NextXref; END ENDLOOP ; IF INT[MidXref]>0 THEN Xmem↑[MidXref].XlinkField←CurXref ELSE Xmem↑ [FirstXref].XlinkField←CurXref; CurXref←Xmem↑[FirstXref].XlinkField--:236--;Footnote[10240]; Footnote[0]; END--:234--;--239:--BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←92; IF OutPtr=LineLength THEN BreakOut[];OutPtr←OutPtr+1; OutBuf↑[OutPtr]←102;IF OutPtr=LineLength THEN BreakOut[]; OutPtr←OutPtr+1;OutBuf↑[OutPtr]←105; END;FinishLine[]; FlushBuffer[0,FALSE];--:239-- END--:221----:219-- ENDLOOP ; END; END.