-- file: TexOpsImpl.mesa -- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:37 am PDT DIRECTORY PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexRest, TexSysdepInline; TexOpsImpl: PROGRAM IMPORTS PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexRest, TexSysdepInline EXPORTS TexOps = PUBLIC BEGIN OPEN PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexRest, TexSysdepInline; --:532----539: TfmFile: ByteFile; --:539----549: FontInfo: LONG POINTER TO ARRAY PascalInteger[0..25000] OF MemoryWord _ PascalStaticZone.NEW[ARRAY PascalInteger[0..25000] OF MemoryWord]; FmemPtr: PascalInteger[0..FontMemSize]; FontPtr: InternalFontNumber; FontCheck: LONG POINTER TO ARRAY InternalFontNumber OF FourQuarters _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF FourQuarters]; FontSize: LONG POINTER TO ARRAY InternalFontNumber OF Scaled _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF Scaled]; FontDsize: LONG POINTER TO ARRAY InternalFontNumber OF Scaled _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF Scaled]; FontParams: LONG POINTER TO ARRAY InternalFontNumber OF Halfword _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF Halfword]; FontName: LONG POINTER TO ARRAY InternalFontNumber OF StrNumber _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF StrNumber]; FontArea: LONG POINTER TO ARRAY InternalFontNumber OF StrNumber _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF StrNumber]; FontBc: LONG POINTER TO ARRAY InternalFontNumber OF EightBits _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF EightBits]; FontEc: LONG POINTER TO ARRAY InternalFontNumber OF EightBits _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF EightBits]; FontGlue: LONG POINTER TO ARRAY InternalFontNumber OF Halfword _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF Halfword]; FontUsed: LONG POINTER TO ARRAY InternalFontNumber OF PascalBoolean _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF PascalBoolean]; FontFamily: LONG POINTER TO ARRAY InternalFontNumber OF StrNumber _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF StrNumber]; FontFace: LONG POINTER TO ARRAY InternalFontNumber OF EightBits _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF EightBits]; FontPypeCode: LONG POINTER TO ARRAY InternalFontNumber OF CedarNat _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF CedarNat]; --:549----550: CharBase: LONG POINTER TO ARRAY InternalFontNumber OF PascalInteger _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF PascalInteger]; WidthBase: LONG POINTER TO ARRAY InternalFontNumber OF PascalInteger _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF PascalInteger]; HeightBase: LONG POINTER TO ARRAY InternalFontNumber OF PascalInteger _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF PascalInteger]; DepthBase: LONG POINTER TO ARRAY InternalFontNumber OF PascalInteger _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF PascalInteger]; ItalicBase: LONG POINTER TO ARRAY InternalFontNumber OF PascalInteger _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF PascalInteger]; LigKernBase: LONG POINTER TO ARRAY InternalFontNumber OF PascalInteger _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF PascalInteger]; KernBase: LONG POINTER TO ARRAY InternalFontNumber OF PascalInteger _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF PascalInteger]; ExtenBase: LONG POINTER TO ARRAY InternalFontNumber OF PascalInteger _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF PascalInteger]; ParamBase: LONG POINTER TO ARRAY InternalFontNumber OF PascalInteger _ PascalStaticZone.NEW[ARRAY InternalFontNumber OF PascalInteger]; --:550----555: NullCharacter: FourQuarters; CurS: PascalInteger; --:616----646: TotalStretch: LONG POINTER TO ARRAY GlueOrd OF Scaled _ PascalStaticZone.NEW[ARRAY GlueOrd OF Scaled]; TotalShrink: LONG POINTER TO ARRAY GlueOrd OF Scaled _ PascalStaticZone.NEW[ARRAY GlueOrd OF Scaled]; --:661----684: EmptyField: TwoHalves; NullDelimiter: FourQuarters; --:684----719: CurMlist: Halfword; CurStyle: SmallNumber; CurSize: SmallNumber; CurMu: Scaled; MlistPenalties: PascalBoolean; --:719----724: CurF: InternalFontNumber; CurC: Quarterword; CurI: FourQuarters; --:724 --764:-- MagicOffset: PascalInteger; --:764----770:-- CurAlign: Halfword; CurSpan: Halfword; AlignPtr: Halfword; --:770----814:-- JustBox: Halfword; PrintSize: PROCEDURE[S: PascalInteger] = BEGIN IF S=0 THEN PrintEsc[280] ELSE IF S=16 THEN PrintEsc[281] ELSE PrintEsc[282]; END;--:699----1355: PrintFamAndChar: PROCEDURE[P: Halfword] = BEGIN PrintEsc[332]; PrintInt[Mem[P]^.Hh.B0];PrintChar[32];PrintAscii[Mem[P]^.Hh.B1]; END; PrintDelimiter: PROCEDURE[P: Halfword] = BEGIN A:PascalInteger; A_Mem[P]^.Qqqq.B0*256+Mem[P]^.Qqqq.B1; A_A*4096+Mem[P]^.Qqqq.B2*256+Mem[P]^.Qqqq.B3; IF A<0 THEN PrintInt[A] ELSE PrintHex[A]; END;--:691----692: PrintSubsidiaryData: PROCEDURE[P: Halfword, C: AsciiCode] = BEGIN IF( INT[PoolPtr]-StrStart^[StrPtr])>=DepthThreshold THEN BEGIN IF Mem [P]^.Hh.Rh#0 THEN Print[186]; END ELSE BEGIN BEGIN StrPool^[PoolPtr]_C; PoolPtr_PoolPtr+1; END;TempPtr_P; SELECT Mem[P]^.Hh.Rh FROM 1 =>BEGIN PrintLn[];PrintCurrentString[]; PrintFamAndChar[P]; END;2 =>ShowInfo[]; 3 =>IF Mem[P]^.Hh.Lh=0 THEN BEGIN PrintLn[];PrintCurrentString[];Print[718]; END ELSE ShowInfo[]; ENDCASE => NULL;PoolPtr_ INT[PoolPtr]-1; END; END;--:692----694: PrintStyle: PROCEDURE[C: PascalInteger] = BEGIN SELECT PascalDIVPower2[C ,1]FROM 0 =>PrintEsc[719]; 1 =>PrintEsc[720];2 =>PrintEsc[721];3 =>PrintEsc[722]; ENDCASE =>Print[723]; END;--:694----225:-- ScanRuleSpec: PROCEDURE RETURNS[ScanRuleSpecResult: Halfword] = BEGIN Q:Halfword; Q_NewRule[]; IF CurCmd=35 THEN Mem[Q+1]^.Int_26214 ELSE BEGIN Mem[Q+3]^.Int_26214; Mem[Q+2]^.Int_0; END; DO {--Label21:--IF ScanKeyword[592] THEN BEGIN ScanDimen[FALSE,FALSE,FALSE]; Mem[Q+1]^.Int_CurVal; GOTO Label21; END; IF ScanKeyword[593] THEN BEGIN ScanDimen[FALSE,FALSE,FALSE]; Mem[Q+3]^.Int_CurVal; GOTO Label21; END; IF ScanKeyword[594] THEN BEGIN ScanDimen[FALSE,FALSE,FALSE]; Mem[Q+2]^.Int_CurVal; GOTO Label21; END;ScanRuleSpecResult_Q;EXIT; EXITS Label21 => NULL} ENDLOOP; END;--:463----464: ScanSpec: PROCEDURE = BEGIN {IF ScanKeyword[700] THEN SaveStack^[SavePtr+0].Int_0 ELSE IF ScanKeyword[701] THEN SaveStack^[SavePtr+0].Int_1 ELSE BEGIN SaveStack^[SavePtr+0].Int_1;SaveStack^[SavePtr+1].Int_0; GOTO Label40; END; ScanDimen[FALSE,FALSE,FALSE];SaveStack^[SavePtr+1].Int_CurVal; EXITS Label40 => NULL};SavePtr_SavePtr+2;ScanLeftBrace[]; END;--:645----649: Hpack: PROCEDURE[P: Halfword,W: Scaled,M: SmallNumber] RETURNS[HpackResult: Halfword] = BEGIN R:Halfword;Q:Halfword;H, D, X:Scaled;S:Scaled; G:Halfword;O:GlueOrd;F:InternalFontNumber;I:FourQuarters; Hd:EightBits;B:PascalInteger; R_GetNode[7];Mem[R]^.Hh.B0_0; Mem[R]^.Hh.B1_0;Mem[R+4]^.Int_0;Q_R+5;Mem[Q]^.Hh.Rh_P;H_0;--650:--D_0; X_0;TotalStretch^[0]_0;TotalShrink^[0]_0;TotalStretch^[1]_0; TotalShrink^[1]_0;TotalStretch^[2]_0;TotalShrink^[2]_0; TotalStretch^[3]_0;TotalShrink^[3]_0--:650--;WHILE P#0 DO--651: BEGIN DO {--Label21:--WHILE( INT[P]>=HiMemMin)DO--654:--BEGIN F_Mem[P]^.Hh.B0; I_FontInfo^[CharBase^[F]+Mem[P]^.Hh.B1].Qqqq;Hd_I.B1; X_X+FontInfo^[WidthBase^[F]+I.B0].Int; S_FontInfo^[ HeightBase^[F]+PascalDIVPower2[(Hd),4]].Int;IF S>H THEN H_S; S_FontInfo^[ DepthBase^[F]+PascalMODPower2Mask[(Hd),15]].Int;IF S>D THEN D_S; P_Mem[P]^.Hh.Rh; END--:654-- ENDLOOP ; IF P#0 THEN BEGIN SELECT Mem[P]^.Hh.B0 FROM 0,1,2,13 =>--653: BEGIN X_X+Mem[P+1]^.Int; IF INT[Mem[P]^.Hh.B0]>=2 THEN S_0 ELSE S_Mem[P+4]^.Int; IF Mem[P+3]^.Int-S>H THEN H_Mem[P+3]^.Int-S; IF Mem[P+2]^.Int+S>D THEN D_Mem[P+2]^.Int+S; END--:653--; 3,4,5 =>IF AdjustTail#0 THEN--655: BEGIN WHILE Mem[Q]^.Hh.Rh#P DO Q_Mem[Q]^.Hh.Rh ENDLOOP ; IF Mem[P]^.Hh.B0=5 THEN BEGIN Mem[AdjustTail]^.Hh.Rh_Mem[P+1]^.Int; WHILE Mem[AdjustTail]^.Hh.Rh#0 DO AdjustTail_Mem[AdjustTail]^.Hh.Rh ENDLOOP ; P_Mem[P]^.Hh.Rh;FreeNode[Mem[Q]^.Hh.Rh,2]; END ELSE BEGIN Mem[AdjustTail]^.Hh.Rh_P;AdjustTail_P;P_Mem[P]^.Hh.Rh; END;Mem[Q]^.Hh.Rh_P;P_Q; END--:655--;8 =>--1360:----:1360-- NULL;10 =>--656: BEGIN G_Mem[P+1]^.Hh.Lh;X_X+Mem[G+1]^.Int;O_Mem[G]^.Hh.B0; TotalStretch^[O]_TotalStretch^[O]+Mem[G+2]^.Int;O_Mem[G]^.Hh.B1; TotalShrink^[O]_TotalShrink^[O]+Mem[G+3]^.Int; IF INT[Mem[P]^.Hh.B1]>=100 THEN BEGIN G_Mem[P+1]^.Hh.Rh; IF Mem[G+3]^.Int>H THEN H_Mem[G+3]^.Int; IF Mem[G+2]^.Int>D THEN D_Mem[G+2]^.Int; END; END--:656--; 11,9 =>X_X+Mem[P+1]^.Int;6 =>--652:--BEGIN Mem[64988]^_Mem[P+1]^; Mem[64988]^.Hh.Rh_Mem[P]^.Hh.Rh;P_64988; GOTO Label21; END--:652--; ENDCASE => NULL; P_Mem[P]^.Hh.Rh; END;EXIT; EXITS Label21 => NULL} ENDLOOP; END--:651-- ENDLOOP ; IF AdjustTail#0 THEN Mem[AdjustTail]^.Hh.Rh_0;Mem[R+3]^.Int_H; Mem[R+2]^.Int_D;--657:--IF M=1 THEN W_X+W;Mem[R+1]^.Int_W;X_W-X; {{IF X=0 THEN BEGIN Mem[R+5]^.Hh.B0_0;Mem[R+5]^.Hh.B1_0;Mem[R+6]^.Gr_0.0; GOTO Label10; END ELSE IF X>0 THEN--658:--BEGIN--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[R+5]^.Hh.B1_O; Mem[R+5]^.Hh.B0_1; IF TotalStretch^[O]#0 THEN Mem[R+6]^.Gr_PascalFLOAT[X]/PascalFLOAT[TotalStretch^[O]] ELSE BEGIN Mem[R+5]^.Hh.B0_0;Mem[R+6]^.Gr_0.0; END; IF(Eqtb^[4793].Int<10000)AND (O=0)AND (Mem[R+5]^.Hh.Rh#0) THEN--660: BEGIN B_Badness[X,TotalStretch^[0]]; IF B>Eqtb^[4793].Int THEN BEGIN PrintLn[]; IF B>100 THEN PrintNl[702] ELSE PrintNl[703];Print[704];PrintInt[B]; GOTO Label50; END; END--:660--; GOTO Label10; END--:658-- ELSE--664:--BEGIN--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[R+5]^.Hh.B1_O; Mem[R+5]^.Hh.B0_2; IF TotalShrink^[O]#0 THEN Mem[R+6]^.Gr_PascalFLOAT[(-X)]/PascalFLOAT[TotalShrink^[O]] ELSE BEGIN Mem[R+5]^.Hh.B0_0;Mem[R+6]^.Gr_0.0; END; IF(TotalShrink^[O]<-X)AND (O=0)AND (Mem[R+5]^.Hh.Rh#0) THEN BEGIN Mem[R+6]^. Gr_1.0;--666: IF(-X-TotalShrink^[0]>Eqtb^[5209].Int)OR (Eqtb^[4793].Int<100) THEN BEGIN IF (Eqtb^[5217].Int>0)AND (-X-TotalShrink^[0]>Eqtb^[5209].Int) THEN BEGIN WHILE Mem[Q]^.Hh.Rh#0 DO Q_Mem[Q]^.Hh.Rh ENDLOOP ;Mem[Q]^.Hh.Rh_NewRule[]; Mem[Mem[Q]^.Hh.Rh+1]^.Int_Eqtb^[5217].Int; END;PrintLn[];PrintNl[710]; PrintScaled[-X-TotalShrink^[0]];Print[711]; GOTO Label50; END--:666--; END ELSE IF(Eqtb^[4793].Int<100)AND (O=0)AND (Mem[R+5]^.Hh.Rh#0) THEN--667: BEGIN B_Badness[-X,TotalShrink^[0]]; IF B>Eqtb^[4793].Int THEN BEGIN PrintLn[];PrintNl[712];PrintInt[B]; GOTO Label50; END; END--:667--; GOTO Label10; END--:664----:657--;EXITS Label50 => NULL};--663: IF OutputActive THEN Print[705] ELSE BEGIN IF PackBeginLine#0 THEN BEGIN IF PackBeginLine>0 THEN Print[706] ELSE Print[707]; PrintInt[ABS[PackBeginLine]];Print[708]; END ELSE Print[709]; PrintInt[Line]; END;PrintLn[];FontInShortDisplay_0; ShortDisplay[Mem[R+5]^.Hh.Rh];PrintLn[];BeginDiagnostic[];ShowBox[R]; EndDiagnostic[TRUE]--:663--;EXITS Label10 => NULL};HpackResult_R; END;--:649----668: Vpackage: PROCEDURE[P: Halfword,H: Scaled,M: SmallNumber,L: Scaled] RETURNS[VpackageResult: Halfword] = BEGIN R:Halfword;W, D, X:Scaled;S:Scaled;G:Halfword;O:GlueOrd; B:PascalInteger; R_GetNode[7];Mem[R]^.Hh.B0_1;Mem[R]^.Hh.B1_0; Mem[R+4]^.Int_0;Mem[R+5]^.Hh.Rh_P;W_0;--650:--D_0;X_0; TotalStretch^[0]_0;TotalShrink^[0]_0;TotalStretch^[1]_0; TotalShrink^[1]_0;TotalStretch^[2]_0;TotalShrink^[2]_0; TotalStretch^[3]_0;TotalShrink^[3]_0--:650--;WHILE P#0 DO--669: BEGIN IF( INT[P]>=HiMemMin) THEN Confusion[713] ELSE SELECT Mem[P]^.Hh.B0 FROM 0,1, 2,13 =>--670:--BEGIN X_X+D+Mem[P+3]^.Int;D_Mem[P+2]^.Int; IF INT[Mem[P]^.Hh.B0]>=2 THEN S_0 ELSE S_Mem[P+4]^.Int; IF Mem[P+1]^.Int+S>W THEN W_Mem[P+1]^.Int+S; END--:670--;8 =>--1359:----:1359-- NULL; 10 =>--671:--BEGIN X_X+D;D_0;G_Mem[P+1]^.Hh.Lh;X_X+Mem[G+1]^.Int; O_Mem[G]^.Hh.B0;TotalStretch^[O]_TotalStretch^[O]+Mem[G+2]^.Int; O_Mem[G]^.Hh.B1;TotalShrink^[O]_TotalShrink^[O]+Mem[G+3]^.Int; IF INT[Mem[P]^.Hh.B1]>=100 THEN BEGIN G_Mem[P+1]^.Hh.Rh; IF Mem[G+1]^.Int>W THEN W_Mem[G+1]^.Int; END; END--:671--; 11 =>BEGIN X_X+D+Mem[P+1]^.Int;D_0; END; ENDCASE => NULL;P_Mem[P]^.Hh.Rh; END--:669-- ENDLOOP ;Mem[R+1]^.Int_W;IF D>L THEN BEGIN X_X+D-L;Mem[R+2]^.Int_L; END ELSE Mem[R+2]^.Int_D;--672:--IF M=1 THEN H_X+H;Mem[R+3]^.Int_H; X_H-X;{{IF X=0 THEN BEGIN Mem[R+5]^.Hh.B0_0;Mem[R+5]^.Hh.B1_0; Mem[R+6]^.Gr_0.0; GOTO Label10; END ELSE IF X>0 THEN--673:--BEGIN--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[R+5]^.Hh.B1_O; Mem[R+5]^.Hh.B0_1; IF TotalStretch^[O]#0 THEN Mem[R+6]^.Gr_PascalFLOAT[X]/PascalFLOAT[TotalStretch^[O]] ELSE BEGIN Mem[R+5]^.Hh.B0_0;Mem[R+6]^.Gr_0.0; END; IF(Eqtb^[4794].Int<10000)AND (O=0)AND (Mem[R+5]^.Hh.Rh#0) THEN--674: BEGIN B_Badness[X,TotalStretch^[0]]; IF B>Eqtb^[4794].Int THEN BEGIN PrintLn[]; IF B>100 THEN PrintNl[702] ELSE PrintNl[703];Print[714];PrintInt[B]; GOTO Label50; END; END--:674--; GOTO Label10; END--:673-- ELSE--676:--BEGIN--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[R+5]^.Hh.B1_O; Mem[R+5]^.Hh.B0_2; IF TotalShrink^[O]#0 THEN Mem[R+6]^.Gr_PascalFLOAT[(-X)]/PascalFLOAT[TotalShrink^[O]] ELSE BEGIN Mem[R+5]^.Hh.B0_0;Mem[R+6]^.Gr_0.0; END; IF(TotalShrink^[O]<-X)AND (O=0)AND (Mem[R+5]^.Hh.Rh#0) THEN BEGIN Mem[R+6]^. Gr_1.0;--677: IF(-X-TotalShrink^[0]>Eqtb^[5210].Int)OR (Eqtb^[4794].Int<100) THEN BEGIN PrintLn[];PrintNl[715];PrintScaled[-X-TotalShrink^[0]];Print[716]; GOTO Label50; END--:677--; END ELSE IF(Eqtb^[4794].Int<100)AND (O=0)AND (Mem[R+5]^.Hh.Rh#0) THEN--678: BEGIN B_Badness[-X,TotalShrink^[0]]; IF B>Eqtb^[4794].Int THEN BEGIN PrintLn[];PrintNl[717];PrintInt[B]; GOTO Label50; END; END--:678--; GOTO Label10; END--:676----:672--;EXITS Label50 => NULL};--675: IF OutputActive THEN Print[705] ELSE BEGIN IF PackBeginLine#0 THEN BEGIN Print[707];PrintInt[ABS[PackBeginLine]];Print[708]; END ELSE Print[709];PrintInt[Line];PrintLn[]; END;BeginDiagnostic[]; ShowBox[R];EndDiagnostic[TRUE]--:675--;EXITS Label10 => NULL};VpackageResult_R; END;--:668----679: AppendToVlist: PROCEDURE[B: Halfword] = BEGIN D:Scaled;P:Halfword; IF CurList.AuxField>-65536000 THEN BEGIN D_Mem[Eqtb^[3027].Hh.Rh +1]^.Int-CurList.AuxField-Mem[B+3]^.Int; IF D=FontBc^[G])AND ( INT[Y]<=FontEc^[G]) THEN BEGIN Q_FontInfo^[CharBase^ [G]+Y].Qqqq;IF( INT[Q.B0]>0) THEN BEGIN IF( PascalMODPower2Mask[(Q.B2),3])=3 THEN BEGIN F_G;C_Y; GOTO Label40; END;Hd_Q.B1; U_FontInfo^[ HeightBase^[G]+PascalDIVPower2[(Hd),4]].Int+FontInfo^[ DepthBase^[G]+PascalMODPower2Mask[(Hd) ,15]].Int;IF U>W THEN BEGIN F_G;C_Y;W_U;IF U>=V THEN GOTO Label40; END; IF( PascalMODPower2Mask[(Q.B2),3])=2 THEN BEGIN Y_Q.B3; GOTO Label22; END; END; END;EXIT; EXITS Label22 => NULL} ENDLOOP; END--:708--; IF INT[Z]<16 THEN EXIT; ENDLOOP; END--:707--;IF LargeAttempt THEN GOTO Label40;LargeAttempt_TRUE; Z_Mem[D]^.Qqqq.B2;X_Mem[D]^.Qqqq.B3; END ENDLOOP ;EXITS Label40 => NULL};IF F#0 THEN--710: IF( PascalMODPower2Mask[(Q.B2),3])=3 THEN--713:--BEGIN B_NewNullBox[];Mem[B]^.Hh.B0_1; R_FontInfo^[ExtenBase^[F]+Q.B3].Qqqq;--714:--C_R.B3; U_HeightPlusDepth[F,C];W_0;Q_FontInfo^[CharBase^[F]+C].Qqqq; Mem[B+1]^.Int_FontInfo^[WidthBase^[F]+Q.B0].Int+FontInfo^[ ItalicBase^[F] +PascalDIVPower2[(Q.B2),2]].Int;C_R.B2;IF C#0 THEN W_W+HeightPlusDepth[F,C]; C_R.B1;IF C#0 THEN W_W+HeightPlusDepth[F,C];C_R.B0; IF C#0 THEN W_W+HeightPlusDepth[F,C];N_0; IF U>0 THEN WHILE W