-- file: TexOps2Impl.mesa -- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:37 am PDT DIRECTORY PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexBuildPage, TexMath, TexRest, TexSysdepInline; TexOps2Impl: PROGRAM IMPORTS PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexBuildPage, TexMath, TexSysdepInline EXPORTS TexOps = PUBLIC BEGIN OPEN PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexBuildPage, TexMath, TexRest, TexSysdepInline; --711:-- StackIntoBox: PROCEDURE[B: Halfword,F: InternalFontNumber, C: Quarterword] = BEGIN P:Halfword; P_CharBox[F,C]; Mem[P]^.Hh.Rh_Mem[B+5]^.Hh.Rh;Mem[B+5]^.Hh.Rh_P; Mem[B+3]^.Int_Mem[P+3]^.Int; END;--:711----712: HeightPlusDepth: PROCEDURE[F: InternalFontNumber,C: Quarterword] RETURNS[HeightPlusDepthResult: Scaled] = BEGIN Q:FourQuarters;Hd:EightBits; Q_FontInfo^[CharBase^[F]+C].Qqqq;Hd_Q.B1; HeightPlusDepthResult_FontInfo^[ HeightBase^[F]+PascalDIVPower2[(Hd),4]].Int+FontInfo^ [ DepthBase^[F]+PascalMODPower2Mask[(Hd),15]].Int; END;--:712 Rebox: PROCEDURE[B: Halfword,W: Scaled] RETURNS[ReboxResult: Halfword] = BEGIN P:Halfword; F:InternalFontNumber;V:Scaled; IF(Mem[B+1]^.Int#W)AND (Mem[B+5]^.Hh.Rh#0) THEN BEGIN IF Mem[B]^.Hh. B0=1 THEN B_Hpack[B,0,1];P_Mem[B+5]^.Hh.Rh; IF(( INT[P]>=HiMemMin))AND (Mem[P]^.Hh.Rh=0) THEN BEGIN F_Mem[P]^.Hh.B0; V_FontInfo^[WidthBase^[F]+FontInfo^[CharBase^[F]+Mem[P]^.Hh.B1].Qqqq.B0] .Int;IF V#Mem[B+1]^.Int THEN Mem[P]^.Hh.Rh_NewKern[Mem[B+1]^.Int-V]; END; FreeNode[B,7];B_NewGlue[12];Mem[B]^.Hh.Rh_P; WHILE Mem[P]^.Hh.Rh#0 DO P_Mem[P]^.Hh.Rh ENDLOOP ;Mem[P]^.Hh.Rh_NewGlue[12]; ReboxResult_Hpack[B,W,0]; END ELSE BEGIN Mem[B+1]^.Int_W;ReboxResult_B; END; END; FlushMath: PROCEDURE = BEGIN FlushNodeList[Mem[CurList.HeadField]^.Hh.Rh]; FlushNodeList[CurList.AuxField];Mem[CurList.HeadField]^.Hh.Rh_0; CurList.TailField_CurList.HeadField;CurList.AuxField_0; END; CleanBox: PROCEDURE[P: Halfword,S: SmallNumber] RETURNS[CleanBoxResult: Halfword] = BEGIN Q:Halfword;SaveStyle:SmallNumber;X:Halfword;R:Halfword; {SELECT Mem[P]^.Hh.Rh FROM 1 =>BEGIN CurMlist_NewNoad[]; Mem[CurMlist+1]^_Mem[P]^; END;2 =>BEGIN Q_Mem[P]^.Hh.Lh; GOTO Label40; END; 3 =>CurMlist_Mem[P]^.Hh.Lh; ENDCASE =>BEGIN Q_NewNullBox[]; GOTO Label40; END ; SaveStyle_CurStyle;CurStyle_S;MlistPenalties_FALSE; MlistToHlist[];Q_Mem[64997]^.Hh.Rh;CurStyle_SaveStyle;--703: BEGIN IF INT[CurStyle]<4 THEN CurSize_0 ELSE CurSize_16*( PascalDIVPower2[(CurStyle-2) ,1]); CurMu_XOverN[FontInfo^[6+ParamBase^[Eqtb^[4081+CurSize].Hh.Rh]].Int, 18]; END--:703--; EXITS Label40 => NULL};IF( INT[Q]>=HiMemMin)OR (Q=0) THEN X_Hpack[Q,0,1] ELSE IF(Mem[Q]^.Hh.Rh=0) AND ( INT[Mem[Q]^.Hh.B0]<=1)AND (Mem[Q+4]^.Int=0) THEN X_Q ELSE X_Hpack[Q,0,1]; --721:--Q_Mem[X+5]^.Hh.Rh;IF( INT[Q]>=HiMemMin) THEN BEGIN R_Mem[Q]^.Hh.Rh; IF R#0 THEN IF Mem[R]^.Hh.Rh=0 THEN IF NOT ( INT[R]>=HiMemMin) THEN IF Mem[R]^. Hh.B0=11 THEN BEGIN FreeNode[R,2];Mem[Q]^.Hh.Rh_0; END; END--:721--; CleanBoxResult_X; END;--:720----722:-- Fetch: PROCEDURE[A: Halfword] = BEGIN CurC_Mem[A]^.Hh.B1;CurF_Eqtb^[4079+Mem[A]^.Hh.B0+CurSize].Hh.Rh; IF CurF=0 THEN--723:--BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134]; Print[210]; END;PrintSize[CurSize];PrintChar[32]; PrintInt[Mem[A]^.Hh.B0];Print[742];PrintAscii[CurC];PrintChar[41]; BEGIN HelpPtr_4;HelpLine^[3]_743;HelpLine^[2]_744;HelpLine^[1]_745; HelpLine^[0]_746; END;Error[];CurI_NullCharacter;Mem[A]^.Hh.Rh_0; END--:723 ELSE BEGIN IF( INT[CurC]>=FontBc^[CurF])AND ( INT[CurC]<=FontEc^[CurF]) THEN CurI _FontInfo^[CharBase^[CurF]+CurC].Qqqq ELSE CurI_NullCharacter; IF NOT (( INT[CurI.B0]>0)) THEN BEGIN CharWarning[CurF,CurC]; Mem[A]^.Hh.Rh_0; END; END; END;--:722----726:----734: --762:-- MakeLeftRight: PROCEDURE[Q: Halfword,Style: SmallNumber, MaxD,MaxH: Scaled] RETURNS[MakeLeftRightResult: SmallNumber] = BEGIN Delta, Delta1, Delta2:Scaled; IF INT[Style]<4 THEN CurSize_0 ELSE CurSize_16*( PascalDIVPower2[(Style-2),1]); Delta2_MaxD+FontInfo^[22+ParamBase^[Eqtb^[4081+CurSize].Hh.Rh]].Int; Delta1_MaxH+MaxD-Delta2;IF Delta2>Delta1 THEN Delta1_Delta2; Delta_( Delta1 /500)*Eqtb^[4785].Int; Delta2_Delta1+Delta1-Eqtb^[5211].Int;IF Delta99 THEN BEGIN Expand[];GetToken[]; END; END ENDLOOP ; IF(CurCmd=74)AND (CurChr=3037) THEN BEGIN ScanOptionalEquals[]; ScanGlue[2]; IF Eqtb^[4810].Int>0 THEN GeqDefine[3037,116,CurVal] ELSE EqDefine[3037 ,116,CurVal]; GOTO Label20; END;EXIT; EXITS Label20 => NULL} ENDLOOP; END;--:782-- InitAlign: PROCEDURE = BEGIN SaveCsPtr:Halfword;P:Halfword; SaveCsPtr_CurCs;PushAlignment[];AlignState_-1000000;--776: IF(CurList.ModeField=201)AND ((CurList.TailField#CurList.HeadField )OR (CurList.AuxField#0)) THEN BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[539]; END;PrintEsc[382];Print[752]; BEGIN HelpPtr_3;HelpLine^[2]_753;HelpLine^[1]_754;HelpLine^[0]_755; END;Error[];FlushMath[]; END--:776--;PushNest[];--775: IF CurList.ModeField=201 THEN BEGIN CurList.ModeField_-1; CurList.AuxField_Nest^[NestPtr-2].AuxField; END ELSE IF INT[CurList.ModeField]>0 THEN CurList.ModeField_-CurList. ModeField--:775--;ScanSpec[];NewSaveLevel[6];--777:--Mem[64992]^.Hh.Rh_0; CurAlign_64992;CurLoop_0;ScannerStatus_4; WarningIndex_SaveCsPtr;AlignState_-1000000; {WHILE TRUE DO BEGIN--778:-- Mem[CurAlign]^.Hh.Rh_NewParamGlue[11]; CurAlign_Mem[CurAlign]^.Hh.Rh--:778--;IF CurCmd=5 THEN GOTO Label30;--779: --783:--P_64996;Mem[P]^.Hh.Rh_0;{WHILE TRUE DO BEGIN GetPreambleToken[]; IF CurCmd=6 THEN GOTO Label31; IF( INT[CurCmd]<=5)AND ( INT[CurCmd]>=4)AND (AlignState=-1000000) THEN IF(P=64996) AND (CurLoop=0)AND (CurCmd=4) THEN CurLoop_CurAlign ELSE BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[761]; END;BEGIN HelpPtr_3; HelpLine^[2]_762;HelpLine^[1]_763;HelpLine^[0]_764; END;BackError[]; GOTO Label31; END ELSE IF(CurCmd#10)OR (P#64996) THEN BEGIN Mem[P]^.Hh.Rh_GetAvail[]; P_Mem[P]^.Hh.Rh;Mem[P]^.Hh.Lh_CurTok; END; END ENDLOOP ;EXITS Label31 => NULL};--:783--Mem[CurAlign]^.Hh.Rh_NewNullBox[];CurAlign_Mem[CurAlign]^.Hh.Rh; Mem[CurAlign]^.Hh.Lh_64991;Mem[CurAlign+1]^.Int_-1073741824; Mem[CurAlign+3]^.Int_Mem[64996]^.Hh.Rh;--784:--P_64996;Mem[P]^.Hh.Rh_0; {WHILE TRUE DO BEGIN DO {--Label22:--GetPreambleToken[]; IF( INT[CurCmd]<=5)AND ( INT[CurCmd]>=4)AND (AlignState=-1000000) THEN GOTO Label32; IF CurCmd=6 THEN BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134]; Print[765]; END;BEGIN HelpPtr_3;HelpLine^[2]_762;HelpLine^[1]_763; HelpLine^[0]_766; END;Error[]; GOTO Label22; END;Mem[P]^.Hh.Rh_GetAvail[]; P_Mem[P]^.Hh.Rh;Mem[P]^.Hh.Lh_CurTok;EXIT; EXITS Label22 => NULL} ENDLOOP; END ENDLOOP ;EXITS Label32 => NULL};Mem[P]^.Hh.Rh_GetAvail[]; P_Mem[P]^.Hh.Rh;Mem[P]^.Hh.Lh_6859--:784--; Mem[CurAlign+2]^.Int_Mem[64996]^.Hh.Rh--:779--; END ENDLOOP ; EXITS Label30 => NULL};ScannerStatus_0--:777--;NewSaveLevel[6]; IF Eqtb^[3564].Hh.Rh#0 THEN BeginTokenList[Eqtb^[3564].Hh.Rh,13]; AlignPeek[]; END;--:774----786:----787:-- InitSpan: PROCEDURE[P: Halfword] = BEGIN PushNest[]; IF CurList.ModeField=-101 THEN CurList.AuxField_1000 ELSE BEGIN CurList.AuxField_-65536000;NormalParagraph[]; END;CurSpan_P; END; --:787-- InitRow: PROCEDURE = BEGIN PushNest[]; CurList.ModeField_(-102)-CurList.ModeField;CurList.AuxField_0; BEGIN Mem[CurList.TailField]^.Hh.Rh_NewGlue[Mem[Mem[64992]^.Hh.Rh+1]^. Hh.Lh];CurList.TailField_Mem[CurList.TailField]^.Hh.Rh; END; Mem[CurList.TailField]^.Hh.B1_12; CurAlign_Mem[Mem[64992]^.Hh.Rh]^.Hh.Rh;CurTail_CurHead; InitSpan[CurAlign]; END;--:786----788:-- InitCol: PROCEDURE = BEGIN Mem[CurAlign+5]^.Hh.Lh_CurCmd; IF CurCmd=63 THEN AlignState_0 ELSE BEGIN BackInput[]; BeginTokenList[Mem[CurAlign+3]^.Int,1]; END; END;--:788----791: FinCol: PROCEDURE RETURNS[FinColResult: PascalBoolean] = BEGIN P:Halfword;Q, R:Halfword; S:Halfword;U:Halfword;W:Scaled;O:GlueOrd;N:Halfword; Q_Mem[CurAlign]^.Hh.Rh;IF(CurAlign=0)OR (Q=0) THEN Confusion[768]; P_Mem[Q]^.Hh.Rh;--792: IF(P=0)AND ( INT[Mem[CurAlign+5]^.Hh.Lh]<129) THEN IF CurLoop#0 THEN--793: BEGIN Mem[Q]^.Hh.Rh_NewNullBox[];P_Mem[Q]^.Hh.Rh;Mem[P]^.Hh.Lh_64991; Mem[P+1]^.Int_-1073741824;CurLoop_Mem[CurLoop]^.Hh.Rh;--794:--Q_64996; R_Mem[CurLoop+3]^.Int;WHILE R#0 DO BEGIN Mem[Q]^.Hh.Rh_GetAvail[]; Q_Mem[Q]^.Hh.Rh;Mem[Q]^.Hh.Lh_Mem[R]^.Hh.Lh;R_Mem[R]^.Hh.Rh; END ENDLOOP ; Mem[Q]^.Hh.Rh_0;Mem[P+3]^.Int_Mem[64996]^.Hh.Rh;Q_64996; R_Mem[CurLoop+2]^.Int;WHILE R#0 DO BEGIN Mem[Q]^.Hh.Rh_GetAvail[]; Q_Mem[Q]^.Hh.Rh;Mem[Q]^.Hh.Lh_Mem[R]^.Hh.Lh;R_Mem[R]^.Hh.Rh; END ENDLOOP ; Mem[Q]^.Hh.Rh_0;Mem[P+2]^.Int_Mem[64996]^.Hh.Rh--:794--; CurLoop_Mem[CurLoop]^.Hh.Rh; Mem[P]^.Hh.Rh_NewGlue[Mem[CurLoop+1]^.Hh.Lh]; END--:793 ELSE BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[769]; END; PrintEsc[757];BEGIN HelpPtr_3;HelpLine^[2]_770;HelpLine^[1]_771; HelpLine^[0]_772; END;Mem[CurAlign+5]^.Hh.Lh_129;Error[]; END--:792--; {IF Mem[CurAlign+5]^.Hh.Lh#128 THEN BEGIN Unsave[];NewSaveLevel[6]; --796: BEGIN IF CurList.ModeField=-101 THEN BEGIN AdjustTail_CurTail; U_Hpack[Mem[CurList.HeadField]^.Hh.Rh,0,1];W_Mem[U+1]^.Int; CurTail_AdjustTail;AdjustTail_0; END ELSE BEGIN U_Vpackage[Mem[CurList.HeadField]^.Hh.Rh,0,1,0]; W_Mem[U+3]^.Int; END;N_0;IF CurSpan#CurAlign THEN--798: BEGIN Q_CurSpan;DO N_N+1;Q_Mem[Mem[Q]^.Hh.Rh]^.Hh.Rh; IF Q=CurAlign THEN EXIT; ENDLOOP;IF INT[N]>255 THEN Confusion[773];Q_CurSpan; WHILE INT[Mem[Mem[Q]^.Hh.Lh]^.Hh.Rh]N THEN BEGIN S_GetNode[2]; Mem[S]^.Hh.Lh_Mem[Q]^.Hh.Lh;Mem[S]^.Hh.Rh_N;Mem[Q]^.Hh.Lh_S; Mem[S+1]^.Int_W; END ELSE IF Mem[Mem[Q]^.Hh.Lh+1]^.IntMem[CurAlign+1]^.Int THEN Mem[CurAlign+1]^.Int_W; Mem[U]^.Hh.B0_13;Mem[U]^.Hh.B1_N;--659: IF TotalStretch^[3]#0 THEN O_3 ELSE IF TotalStretch^[2]#0 THEN O_2 ELSE IF TotalStretch^[1]#0 THEN O_1 ELSE O_0--:659--;Mem[U+5]^.Hh.B1_O; Mem[U+6]^.Int_TotalStretch^[O];--665: IF TotalShrink^[3]#0 THEN O_3 ELSE IF TotalShrink^[2]#0 THEN O_2 ELSE IF TotalShrink^[1]#0 THEN O_1 ELSE O_0--:665--;Mem[U+5]^.Hh.B0_O; Mem[U+4]^.Int_TotalShrink^[O];PopNest[]; Mem[CurList.TailField]^.Hh.Rh_U;CurList.TailField_U; END--:796--; --795: BEGIN Mem[CurList.TailField]^.Hh.Rh_NewGlue[Mem[Mem[CurAlign]^.Hh.Rh +1]^.Hh.Lh];CurList.TailField_Mem[CurList.TailField]^.Hh.Rh; END; Mem[CurList.TailField]^.Hh.B1_12--:795--; IF INT[Mem[CurAlign+5]^.Hh.Lh]>=129 THEN BEGIN FinColResult_TRUE; GOTO Label10; END; InitSpan[P]; END;AlignState_1000000;--406:--DO GetXToken[]; IF CurCmd#10--:406-- THEN EXIT; ENDLOOP;CurAlign_P;InitCol[];FinColResult_FALSE;EXITS Label10 => NULL}; END; --:791----799:-- FinRow: PROCEDURE = BEGIN P:Halfword; IF CurList.ModeField=-101 THEN BEGIN P_Hpack[Mem[CurList. HeadField]^.Hh.Rh,0,1];PopNest[];AppendToVlist[P]; IF CurHead#CurTail THEN BEGIN Mem[CurList.TailField]^.Hh.Rh_Mem[ CurHead]^.Hh.Rh;CurList.TailField_CurTail; END; END ELSE BEGIN P_Vpackage[Mem[CurList.HeadField]^.Hh.Rh,0,1,1073741823 ];PopNest[];Mem[CurList.TailField]^.Hh.Rh_P;CurList.TailField_P; CurList.AuxField_1000; END;Mem[P]^.Hh.B0_13;Mem[P+6]^.Int_0; IF Eqtb^[3564].Hh.Rh#0 THEN BeginTokenList[Eqtb^[3564].Hh.Rh,13]; AlignPeek[]; END;--:799----800:-- AlignPeek: PROCEDURE = BEGIN DO {--Label20:--AlignState_1000000;--406: DO GetXToken[]; IF CurCmd#10--:406-- THEN EXIT; ENDLOOP; IF CurCmd=34 THEN BEGIN ScanLeftBrace[];NewSaveLevel[7]; IF CurList.ModeField=-1 THEN NormalParagraph[]; END ELSE IF CurCmd=2 THEN FinAlign [] ELSE IF(CurCmd=5)AND (CurChr=130) THEN GOTO Label20 ELSE BEGIN InitRow[];InitCol[]; END;EXIT; EXITS Label20 => NULL} ENDLOOP; END;--:785----:800----815: END.