-- file: TexRestImpl.mesa -- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:38 am PDT DIRECTORY PascalBasic, PascalWizardFiles, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexParagraph, TexBuildPage, TexRest, TexSysdepInline; TexRestImpl: PROGRAM IMPORTS TexTypes, TexInteraction, TexMemory, TexSymbols, TexBuildPage, TexSysdepInline EXPORTS TexRest = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexParagraph, TexBuildPage, TexRest, TexSysdepInline; MacroCall: PROCEDURE = BEGIN R:Halfword;P:Halfword;Q:Halfword;S:Halfword;T:Halfword;U, V:Halfword; RbracePtr:Halfword;N:SmallNumber;Unbalance:Halfword;M:Halfword; RefCount:Halfword;SaveScannerStatus:SmallNumber; SaveWarningIndex:Halfword;MatchChr:AsciiCode; SaveScannerStatus_ScannerStatus; SaveWarningIndex_WarningIndex;WarningIndex_CurCs; RefCount_CurChr;R_Mem[RefCount]^.Hh.Rh;N_0; IF Eqtb^[4797].Int>0 THEN--401:--BEGIN BeginDiagnostic[];PrintLn[]; PrintCs[WarningIndex];TokenShow[RefCount];EndDiagnostic[FALSE]; END--:401--;{IF Mem[R]^.Hh.Lh#3584 THEN--391:--BEGIN ScannerStatus_3; Unbalance_0;LongState_Eqtb^[CurCs].Hh.B0; IF INT[LongState]>=112 THEN LongState_LongState-2; DO IF( INT[Mem[R]^.Hh.Lh]>3455)OR ( INT[Mem[R]^.Hh.Lh]<3328) THEN S_0 ELSE BEGIN MatchChr_ INT[Mem[R]^.Hh.Lh]-3328;S_Mem[R]^.Hh.Rh;R_S;P_64997; Mem[P]^.Hh.Rh_0;M_0; END;--392:--DO {--Label22:--GetToken[]; {IF CurTok=Mem[R]^.Hh.Lh THEN--394:--BEGIN R_Mem[R]^.Hh.Rh; IF( INT[Mem[R]^.Hh.Lh]>=3328)AND ( INT[Mem[R]^.Hh.Lh]<=3584) THEN BEGIN IF INT[CurTok]<512 THEN AlignState_AlignState-1; GOTO Label40; END ELSE GOTO Label22; END--:394--; --397:--IF S#R THEN IF S=0 THEN--398:--BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[511]; END;SprintCs[WarningIndex];Print[512]; BEGIN HelpPtr_4;HelpLine^[3]_513;HelpLine^[2]_514;HelpLine^[1]_515; HelpLine^[0]_516; END;Error[]; GOTO Label10; END--:398-- ELSE BEGIN T_S; DO BEGIN Q_GetAvail[];Mem[P]^.Hh.Rh_Q;Mem[Q]^.Hh.Lh_Mem[T]^.Hh.Lh; P_Q; END;M_M+1;U_Mem[T]^.Hh.Rh;V_S; {WHILE TRUE DO BEGIN IF U=R THEN IF CurTok#Mem[V]^.Hh.Lh THEN GOTO Label30 ELSE BEGIN R_Mem[V]^.Hh.Rh; GOTO Label22; END; IF Mem[U]^.Hh.Lh#Mem[V]^.Hh.Lh THEN GOTO Label30;U_Mem[U]^.Hh.Rh; V_Mem[V]^.Hh.Rh; END ENDLOOP ;EXITS Label30 => NULL};T_Mem[T]^.Hh.Rh; IF T=R THEN EXIT; ENDLOOP;R_S; END--:397--; IF CurTok=ParToken THEN IF LongState#111 THEN--396: BEGIN IF LongState=110 THEN BEGIN Runaway[];BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[506]; END;SprintCs[WarningIndex];Print[507]; BEGIN HelpPtr_3;HelpLine^[2]_508;HelpLine^[1]_509;HelpLine^[0]_510; END;BackError[]; END;Pstack^[N]_Mem[64997]^.Hh.Rh; AlignState_AlignState-Unbalance; FOR i:INT IN [ INT[0 ].. INT[N ]] DO M _ i; FlushList[Pstack^[M]] ENDLOOP; GOTO Label10; END--:396--; IF INT[CurTok]<768 THEN IF INT[CurTok]<512 THEN--399:--BEGIN Unbalance_1; {WHILE TRUE DO BEGIN BEGIN BEGIN Q_Avail; IF Q=0 THEN Q_GetAvail [] ELSE BEGIN Avail_Mem[Q]^.Hh.Rh;Mem[Q]^.Hh.Rh_0; DynUsed_DynUsed+1; END; END;Mem[P]^.Hh.Rh_Q;Mem[Q]^.Hh.Lh_CurTok;P_Q; END;GetToken[];IF CurTok=ParToken THEN IF LongState#111 THEN--396: BEGIN IF LongState=110 THEN BEGIN Runaway[];BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[506]; END;SprintCs[WarningIndex];Print[507]; BEGIN HelpPtr_3;HelpLine^[2]_508;HelpLine^[1]_509;HelpLine^[0]_510; END;BackError[]; END;Pstack^[N]_Mem[64997]^.Hh.Rh; AlignState_AlignState-Unbalance; FOR i:INT IN [ INT[0 ].. INT[N ]] DO M _ i; FlushList[Pstack^[M]] ENDLOOP; GOTO Label10; END--:396--; IF INT[CurTok]<768 THEN IF INT[CurTok]<512 THEN Unbalance_Unbalance+1 ELSE BEGIN Unbalance_ INT[Unbalance]-1;IF Unbalance=0 THEN GOTO Label31; END; END ENDLOOP ; EXITS Label31 => NULL};RbracePtr_P;BEGIN Q_GetAvail[];Mem[P]^.Hh.Rh_Q; Mem[Q]^.Hh.Lh_CurTok;P_Q; END; END--:399-- ELSE--395:--BEGIN BackInput[]; BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[498]; END; SprintCs[WarningIndex];Print[499];BEGIN HelpPtr_6;HelpLine^[5]_500; HelpLine^[4]_501;HelpLine^[3]_502;HelpLine^[2]_503;HelpLine^[1]_504; HelpLine^[0]_505; END;AlignState_AlignState+1;LongState_110; CurTok_ParToken;InsError[]; END--:395-- ELSE--393: BEGIN IF CurTok=2592 THEN IF INT[Mem[R]^.Hh.Lh]<=3584 THEN IF INT[Mem[R]^.Hh.Lh]>=3328 THEN GOTO Label22;BEGIN Q_GetAvail[];Mem[P]^.Hh.Rh_Q; Mem[Q]^.Hh.Lh_CurTok;P_Q; END; END--:393--;M_M+1; IF INT[Mem[R]^.Hh.Lh]>3584 THEN GOTO Label22;IF INT[Mem[R]^.Hh.Lh]<3328 THEN GOTO Label22; EXITS Label40 => NULL};IF S#0 THEN--400: BEGIN IF(M=1)AND ( INT[Mem[P]^.Hh.Lh]<768)AND (P#64997) THEN BEGIN Mem[RbracePtr ]^.Hh.Rh_0;BEGIN Mem[P]^.Hh.Rh_Avail;Avail_P;DynUsed_DynUsed-1; END; P_Mem[64997]^.Hh.Rh;Pstack^[N]_Mem[P]^.Hh.Rh;BEGIN Mem[P]^.Hh.Rh_Avail; Avail_P;DynUsed_DynUsed-1; END; END ELSE Pstack^[N]_Mem[64997]^.Hh.Rh; N_N+1;IF Eqtb^[4797].Int>0 THEN BEGIN BeginDiagnostic[]; PrintNl[MatchChr];PrintInt[N];Print[517]; ShowTokenList[Pstack^[N-1],0,1000];EndDiagnostic[FALSE]; END; END--:400 --:392--;EXIT; EXITS Label22 => NULL} ENDLOOP; IF Mem[R]^.Hh.Lh=3584 THEN EXIT; ENDLOOP; END--:391--;--390: WHILE(CurInput.StateField=0)AND (CurInput.LocField=0)DO EndTokenList[] ENDLOOP ;BeginTokenList[RefCount,5]; CurInput.NameField_WarningIndex;CurInput.LocField_Mem[R]^.Hh.Rh; IF INT[N]>0 THEN BEGIN IF ParamPtr+N>MaxParamStack THEN BEGIN MaxParamStack_ParamPtr+N; IF MaxParamStack>ParamSize THEN Overflow[497,ParamSize]; END; FOR i:INT IN [ INT[0 ].. INT[N-1 ]] DO M _ i; ParamStack^[ INT[ParamPtr]+M]_Pstack^[M] ENDLOOP; ParamPtr_ParamPtr+N; END--:390--;EXITS Label10 => NULL};ScannerStatus_SaveScannerStatus; WarningIndex_SaveWarningIndex; END;--:389----379: StrToks: PROCEDURE RETURNS[StrToksResult: Halfword] = BEGIN P:Halfword;Q:Halfword;T:Halfword; K:PoolPointer; BEGIN IF INT[PoolPtr+1]>PoolSize THEN Overflow[129, PoolSize-InitPoolPtr]; END;P_64997;Mem[P]^.Hh.Rh_0;K_StrStart^[StrPtr]; WHILE INT[K]