-- file: TexMath3Impl.mesa -- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:38 am PDT DIRECTORY PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexOps, TexMath, TexSysdepInline; TexMath3Impl: PROGRAM IMPORTS PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexOps, TexMath, TexSysdepInline EXPORTS TexMath = PUBLIC BEGIN OPEN PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexOps, TexMath, TexSysdepInline; MakeRadical: PROCEDURE[Q: Halfword] = BEGIN X, Y:Halfword;Delta, Clr:Scaled; X_CleanBox[Q+1,2*( PascalDIVPower2[CurStyle ,1])+1]; IF INT[CurStyle]<2 THEN Clr_FontInfo^[8+ParamBase^[Eqtb^[4082+CurSize].Hh. Rh]].Int+( PascalDIVPower2[ABS[FontInfo^[5+ParamBase^[Eqtb^[4081+CurSize].Hh.Rh]].Int],2]) ELSE BEGIN Clr_FontInfo^[8+ParamBase^[Eqtb^[4082+CurSize].Hh.Rh]].Int ;Clr_Clr+( PascalDIVPower2[ABS[Clr],2]); END; Y_VarDelimiter[Q+4,CurSize,Mem[X+3]^.Int+Mem[X+2]^.Int+Clr+FontInfo^[ 8+ParamBase^[Eqtb^[4082+CurSize].Hh.Rh]].Int]; Delta_Mem[Y+2]^.Int-(Mem[X+3]^.Int+Mem[X+2]^.Int+Clr); IF Delta>0 THEN Clr_Clr+Half[Delta];Mem[Y+4]^.Int_-(Mem[X+3]^.Int+Clr); Mem[Y]^.Hh.Rh_Overbar[X,Clr,Mem[Y+3]^.Int];Mem[Q+1]^.Hh.Lh_Hpack[Y,0,1]; Mem[Q+1]^.Hh.Rh_2; END;--:737----738: MakeMathAccent: PROCEDURE[Q: Halfword] = BEGIN P, X, Y:Halfword; A:PascalInteger;C:Quarterword;F:InternalFontNumber;I:FourQuarters;S:Scaled; H:Scaled;Delta:Scaled;W:Scaled; Fetch[Q+4]; IF( INT[CurI.B0]>0) THEN BEGIN I_CurI;C_CurC;F_CurF;--741:--S_0; {IF Mem[Q+1]^.Hh.Rh=1 THEN BEGIN Fetch[Q+1]; IF( PascalMODPower2Mask[(CurI.B2),3])=1 THEN BEGIN A_LigKernBase^[CurF]+CurI.B3; DO CurI_FontInfo^[A].Qqqq; IF CurI.B1=SkewChar^[CurF] THEN BEGIN IF INT[CurI.B2]>=128 THEN S_ FontInfo^[KernBase^[CurF]+CurI.B3].Int; GOTO Label31; END;A_A+1; IF INT[CurI.B0]>=128 THEN EXIT; ENDLOOP; END; END;EXITS Label31 => NULL};--:741--X_CleanBox[Q+1,2*( PascalDIVPower2[CurStyle ,1])+1];W_Mem[X+1]^.Int;H_Mem[X+3]^.Int; --740:--{WHILE TRUE DO BEGIN IF( PascalMODPower2Mask[(I.B2),3])#2 THEN GOTO Label30;Y_I.B3; I_FontInfo^[CharBase^[F]+Y].Qqqq; IF FontInfo^[WidthBase^[F]+I.B0].Int>W THEN GOTO Label30;C_Y; END ENDLOOP ;EXITS Label30 => NULL};--:740--IF H0 THEN BEGIN ShiftUp_ShiftUp+Delta; ShiftDown_ShiftDown+Delta; END; END--:745-- ELSE--746: BEGIN IF INT[CurStyle]<2 THEN Clr_3*Mem[Q+1]^.Int ELSE Clr_Mem[Q+1]^.Int; Delta_Half[Mem[Q+1]^.Int]; Delta1_Clr-((ShiftUp-Mem[X+2]^.Int)-(FontInfo^[22+ParamBase^[Eqtb^[ 4081+CurSize].Hh.Rh]].Int+Delta)); Delta2_Clr-(( FontInfo^[22+ParamBase^[Eqtb^[4081+CurSize].Hh.Rh]].Int-Delta)-(Mem[Z+3]^.Int-ShiftDown)); IF Delta1>0 THEN ShiftUp_ShiftUp+Delta1; IF Delta2>0 THEN ShiftDown_ShiftDown+Delta2; END--:746--;--747: V_NewNullBox[];Mem[V]^.Hh.B0_1;Mem[V+3]^.Int_ShiftUp+Mem[X+3]^.Int; Mem[V+2]^.Int_Mem[Z+2]^.Int+ShiftDown;Mem[V+1]^.Int_Mem[X+1]^.Int; IF Mem[Q+1]^.Int=0 THEN BEGIN P_NewKern[(ShiftUp-Mem[X+2]^.Int)-(Mem[Z +3]^.Int-ShiftDown)];Mem[P]^.Hh.Rh_Z; END ELSE BEGIN Y_FractionRule[Mem[Q+1]^.Int]; P_NewKern[( FontInfo^[22+ParamBase^[Eqtb^[4081+CurSize].Hh.Rh]].Int-Delta)-(Mem[Z+3]^.Int-ShiftDown)];Mem[Y]^.Hh.Rh_P;Mem[P]^.Hh.Rh_Z; P_NewKern[(ShiftUp-Mem[X+2]^.Int)-(FontInfo^[22+ParamBase^[Eqtb^[ 4081+CurSize].Hh.Rh]].Int+Delta)];Mem[P]^.Hh.Rh_Y; END;Mem[X]^.Hh.Rh_P; Mem[V+5]^.Hh.Rh_X--:747--;--748: IF INT[CurStyle]<2 THEN Delta_FontInfo^[20+ParamBase^[Eqtb^[4081+CurSize]. Hh.Rh]].Int ELSE Delta_FontInfo^[21+ParamBase^[Eqtb^[4081+CurSize].Hh. Rh]].Int;X_VarDelimiter[Q+4,CurSize,Delta];Mem[X]^.Hh.Rh_V; Z_VarDelimiter[Q+5,CurSize,Delta];Mem[V]^.Hh.Rh_Z; Mem[Q+1]^.Int_Hpack[X,0,1]--:748--; END;--:743----749: MakeOrd: PROCEDURE[Q: Halfword] = BEGIN A:PascalInteger;P:Halfword; DO {--Label20:--{IF(Mem[Q+3]^.Hh.Rh=0)AND (Mem[Q+2]^.Hh.Rh=0)AND (Mem[Q+1]^.Hh.Rh=1) THEN BEGIN P_Mem[Q]^.Hh.Rh; IF P#0 THEN IF( INT[Mem[P]^.Hh.B0]>=16)AND ( INT[Mem[P]^.Hh.B0]<=22) THEN IF Mem[P+1]^. Hh.Rh=1 THEN IF Mem[P+1]^.Hh.B0=Mem[Q+1]^.Hh.B0 THEN BEGIN Mem[Q+1]^.Hh.Rh _4;Fetch[Q+1]; IF( PascalMODPower2Mask[(CurI.B2),3])=1 THEN BEGIN A_LigKernBase^[CurF]+CurI.B3; CurC_Mem[P+1]^.Hh.B1;DO CurI_FontInfo^[A].Qqqq;--753: IF CurI.B1=CurC THEN IF INT[CurI.B2]>=128 THEN BEGIN P_NewKern[FontInfo ^[KernBase^[CurF]+CurI.B3].Int];Mem[P]^.Hh.Rh_Mem[Q]^.Hh.Rh; Mem[Q]^.Hh.Rh_P; GOTO Label10; END ELSE BEGIN Mem[Q]^.Hh.Rh_Mem[P]^.Hh.Rh; Mem[Q+1]^.Hh.Rh_1;Mem[Q+1]^.Hh.B1_CurI.B3;Mem[Q+3]^_Mem[P+3]^; Mem[Q+2]^_Mem[P+2]^;FreeNode[P,4]; GOTO Label20; END--:753--;A_A+1; IF INT[CurI.B0]>=128 THEN EXIT; ENDLOOP; END; END; END;EXITS Label10 => NULL};EXIT; EXITS Label20 => NULL} ENDLOOP; END;--:752----756: MakeScripts: PROCEDURE[Q: Halfword,Delta: Scaled] = BEGIN P, X, Y, Z:Halfword; ShiftUp, ShiftDown, Clr:Scaled;T:SmallNumber; P_Mem[Q+1]^.Int; IF( INT[P]>=HiMemMin) THEN BEGIN ShiftUp_0;ShiftDown_0; END ELSE BEGIN Z_Hpack[P,0,1];IF INT[CurStyle]<4 THEN T_16 ELSE T_32; ShiftUp_Mem[Z+3]^.Int-FontInfo^[18+ParamBase^[Eqtb^[4081+T].Hh.Rh]].Int; ShiftDown_Mem[Z+2]^.Int+FontInfo^[19+ParamBase^[Eqtb^[4081+T].Hh.Rh]]. Int;FreeNode[Z,7]; END;IF Mem[Q+2]^.Hh.Rh=0 THEN--757: BEGIN X_CleanBox[Q+3,2*( PascalDIVPower2[CurStyle ,2])+5]; Mem[X+1]^.Int_Mem[X+1]^.Int+Eqtb^[5213].Int; IF ShiftDown0 THEN BEGIN ShiftDown_ShiftDown+Clr; Clr_( ABS[FontInfo^[5+ParamBase^[Eqtb^[4081+CurSize].Hh.Rh]].Int*4]/5 )-(ShiftUp-Mem[X+2]^.Int);IF Clr>0 THEN BEGIN ShiftUp_ShiftUp+Clr; ShiftDown_ShiftDown-Clr; END; END;Mem[X+4]^.Int_Delta; P_NewKern[(ShiftUp-Mem[X+2]^.Int)-(Mem[Y+3]^.Int-ShiftDown)]; Mem[X]^.Hh.Rh_P;Mem[P]^.Hh.Rh_Y;X_Vpackage[X,0,1,1073741823]; Mem[X+4]^.Int_ShiftDown; END--:759--; END; IF Mem[Q+1]^.Int=0 THEN Mem[Q+1]^.Int_X ELSE BEGIN P_Mem[Q+1]^.Int; WHILE Mem[P]^.Hh.Rh#0 DO P_Mem[P]^.Hh.Rh ENDLOOP ;Mem[P]^.Hh.Rh_X; END; END;--:756 END.