-- file: GFtoPressImpl1.mesa -- Pascal-to-Mesa translator output, translated at October 25, 1985 5:07:13 pm PDT DIRECTORY PascalBasic, PascalWizardFiles, GFtoPressPrivate, GFtoPressVars1, GFtoPressVars2, GFtoPressVars3; GFtoPressImpl1: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, GFtoPressPrivate, GFtoPressVars1, GFtoPressVars2, GFtoPressVars3 EXPORTS GFtoPressPrivate = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, GFtoPressPrivate, GFtoPressVars1, GFtoPressVars2, GFtoPressVars3; --:220-- Initialize: PROCEDURE = BEGIN I, J, M, N:PascalInteger; TtyRewrite[@TermOut]; {PascalWriteLongString[file: @TermOut, item: "This is GFtoPress 1.5, for Cedar 6.0"]; PascalWriteLn[file: @TermOut]};--13: FOR i:INT IN [ INT[0 ].. INT[31 ]] DO I _ i; Xchr^[I]_'? ENDLOOP;Xchr^[32]_' ;Xchr^[33]_'!; Xchr^[34]_'";Xchr^[35]_'#;Xchr^[36]_'$;Xchr^[37]_'%;Xchr^[38]_'&; Xchr^[39]_'';Xchr^[40]_'(;Xchr^[41]_');Xchr^[42]_'*;Xchr^[43]_'+; Xchr^[44]_',;Xchr^[45]_'-;Xchr^[46]_'.;Xchr^[47]_'/;Xchr^[48]_'0; Xchr^[49]_'1;Xchr^[50]_'2;Xchr^[51]_'3;Xchr^[52]_'4;Xchr^[53]_'5; Xchr^[54]_'6;Xchr^[55]_'7;Xchr^[56]_'8;Xchr^[57]_'9;Xchr^[58]_':; Xchr^[59]_';;Xchr^[60]_'<;Xchr^[61]_'=;Xchr^[62]_'>;Xchr^[63]_'?; Xchr^[64]_'@;Xchr^[65]_'A;Xchr^[66]_'B;Xchr^[67]_'C;Xchr^[68]_'D; Xchr^[69]_'E;Xchr^[70]_'F;Xchr^[71]_'G;Xchr^[72]_'H;Xchr^[73]_'I; Xchr^[74]_'J;Xchr^[75]_'K;Xchr^[76]_'L;Xchr^[77]_'M;Xchr^[78]_'N; Xchr^[79]_'O;Xchr^[80]_'P;Xchr^[81]_'Q;Xchr^[82]_'R;Xchr^[83]_'S; Xchr^[84]_'T;Xchr^[85]_'U;Xchr^[86]_'V;Xchr^[87]_'W;Xchr^[88]_'X; Xchr^[89]_'Y;Xchr^[90]_'Z;Xchr^[91]_'[;Xchr^[92]_'\\;Xchr^[93]_']; Xchr^[94]_'^;Xchr^[95]_'_;Xchr^[96]_'`;Xchr^[97]_'a;Xchr^[98]_'b; Xchr^[99]_'c;Xchr^[100]_'d;Xchr^[101]_'e;Xchr^[102]_'f; Xchr^[103]_'g;Xchr^[104]_'h;Xchr^[105]_'i;Xchr^[106]_'j; Xchr^[107]_'k;Xchr^[108]_'l;Xchr^[109]_'m;Xchr^[110]_'n; Xchr^[111]_'o;Xchr^[112]_'p;Xchr^[113]_'q;Xchr^[114]_'r; Xchr^[115]_'s;Xchr^[116]_'t;Xchr^[117]_'u;Xchr^[118]_'v; Xchr^[119]_'w;Xchr^[120]_'x;Xchr^[121]_'y;Xchr^[122]_'z; Xchr^[123]_'{;Xchr^[124]_'|;Xchr^[125]_'};Xchr^[126]_'~; FOR i:INT IN [ INT[127 ].. INT[255 ]] DO I _ i; Xchr^[I]_'? ENDLOOP;--:13----14: FOR i:INT IN [ INT[0 ].. INT[255 ]] DO I _ i; Xord^[PascalCHR[I]]_32 ENDLOOP; FOR i:INT IN [ INT[33 ].. INT[126 ]] DO I _ i; Xord^[Xchr^[I]]_I ENDLOOP;--:14----54:--FmemPtr_0;--:54----97: Interaction_FALSE;FontsNotLoaded_TRUE;FontName^[1]_29; FontName^[2]_30;FontName^[3]_31;FontName^[4]_0;FontName^[5]_32; FOR i:INT IN [ INT[1 ].. INT[5 ]] DO K _ i; FontArea^[K]_0;FontAt^[K]_0; ENDLOOP;--:97----103: TotalPages_0;--:103----123:--C^[1]_1;D^[1]_2;TwoToThe^[0]_1;M_1; FOR i:INT IN [ INT[1 ].. INT[13 ]] DO K _ i; TwoToThe^[K]_2*TwoToThe^[K-1] ENDLOOP; FOR i:INT IN [ INT[2 ].. INT[6 ]] DO --125:--K _ i; N_TwoToThe^[K-1]; FOR i:INT IN [ INT[0 ].. INT[N-1 ]] DO J _ i; M_M+1;C^[M]_M;D^[M]_N+N; ENDLOOP;--:125-- ENDLOOP; FOR i:INT IN [ INT[7 ].. INT[12 ]] DO --126:--K _ i; N_TwoToThe^[K-1]; FOR i:INT DECREASING IN [ INT[1 ].. INT[K ]] DO J _ i; M_M+1;D^[M]_N+N; IF J=K THEN C^[M]_N ELSE C^[M]_C^[M-1]+TwoToThe^[J-1]; ENDLOOP;--:126-- ENDLOOP; --:123----222:--CommandLineAlreadyGotten_FALSE;--:222-- END;--:3----8: JumpOut: PROCEDURE = BEGIN ERROR Error9999; END;--:8----16:-- InputLn: PROCEDURE = BEGIN TtyReset[@TermIn];IF PascalTextEOLN[file: @TermIn] THEN PascalReadLn[file: @TermIn]; LineLength_0; WHILE ( INT[LineLength] INT[Ec]+1)OR ( INT[Ec]>255) THEN GOTO Label11;ReadTfmWord[];Nw_B0*256+B1; Nh_B2*256+B3;ReadTfmWord[];Nd_B0*256+B1;Ni_B2*256+B3;ReadTfmWord[]; Nl_B0*256+B1;Nk_B2*256+B3;ReadTfmWord[];Ne_B0*256+B1;Np_B2*256+B3; IF Lf# INT[6]+Lh+( INT[Ec]-Bc+1)+Nw+Nh+Nd+Ni+Nl+Nk+Ne+Np THEN GOTO Label11; END--:60--; --61:--Lf_ INT[Lf]-6-Lh;IF INT[Np]<8 THEN Lf_ INT[Lf]+8-Np; IF INT[FmemPtr]+Lf>FontMemSize THEN BEGIN {PascalWriteLongString[file: @TermOut, item: " "] ; PascalWriteLongString[file: @TermOut, item: "No room for TFM file!"]};JumpOut[]; END;CharBase^[F]_ INT[FmemPtr]-Bc; WidthBase^[F]_CharBase^[F]+Ec+1;HeightBase^[F]_WidthBase^[F]+Nw; DepthBase^[F]_HeightBase^[F]+Nh;ItalicBase^[F]_DepthBase^[F]+Nd; LigKernBase^[F]_ItalicBase^[F]+Ni;KernBase^[F]_LigKernBase^[F]+Nl; ExtenBase^[F]_KernBase^[F]+Nk;ParamBase^[F]_ExtenBase^[F]+Ne--:61--; --62:--BEGIN IF INT[Lh]<18 THEN GOTO Label11;BEGIN ReadTfmWord[];Qw.B0_B0+0; Qw.B1_B1+0;Qw.B2_B2+0;Qw.B3_B3+0;FontCheck^[F]_Qw; END;ReadTfmWord[]; IF INT[B0]>127 THEN GOTO Label11;Z_( INT[(B0*256+B1)]*256+B2)*16+( PascalDIVPower2[B3 ,4]); IF Z<65536 THEN GOTO Label11;FOR i:INT IN [ INT[1 ].. INT[10 ]] DO I _ i; ReadTfmWord[] ENDLOOP; PascalReadLong[file: @TfmFile.baseFile, length: SIZE[EightBits, 2], element: @TfmFile.element, item: @FamLen]; BEGIN IF INT[PoolPtr]+FamLen>PoolSize THEN BEGIN {PascalWriteLongString[file: @TermOut, item: " "] ; PascalWriteLongString[file: @TermOut, item: "Too many strings!"]};JumpOut[]; END; END; FOR i:INT IN [ INT[1 ].. INT[FamLen ]] DO I _ i; PascalReadLong[file: @TfmFile.baseFile, length: SIZE[EightBits, 2], element: @TfmFile.element, item: @B0]; BEGIN StrPool^[PoolPtr]_B0;PoolPtr_PoolPtr+1; END; ENDLOOP; FOR i:INT IN [ INT[ INT[FamLen]+1 ].. INT[19 ]] DO I _ i; PascalReadLong[file: @TfmFile.baseFile, length: SIZE[EightBits, 2], element: @TfmFile.element, item: @B0] ENDLOOP;FontFamily^[F]_MakeString[]; ReadTfmWord[];FontFace^[F]_B3;WHILE INT[Lh]>18 DO BEGIN ReadTfmWord[]; Lh_ INT[Lh]-1; END ENDLOOP ;FontDsize^[F]_Z;IF S>0 THEN Z_S;FontSize^[F]_Z; END--:62--; --63:--FOR i:INT IN [ INT[FmemPtr ].. INT[WidthBase^[F]-1 ]] DO K _ i; BEGIN ReadTfmWord[]; Qw.B0_B0+0;Qw.B1_B1+0;Qw.B2_B2+0;Qw.B3_B3+0;FontInfo^[K].Qqqq_Qw; END; IF( INT[B0]>=Nw)OR ( PascalDIVPower2[B1 ,4]>=Nh)OR ( PascalMODPower2Mask[B1 ,15]>=Nd)OR ( PascalDIVPower2[B2 ,2]>=Ni) THEN GOTO Label11 ;SELECT PascalMODPower2Mask[B2 ,3]FROM 1 =>IF INT[B3]>=Nl THEN GOTO Label11;3 =>IF INT[B3]>=Ne THEN GOTO Label11; 0,2 => NULL; ENDCASE;--:63-- ENDLOOP;--64:--BEGIN--65:--BEGIN Alpha_16*Z;Beta_16; WHILE Z>=8388608 DO BEGIN Z_ PascalDIVPower2[Z ,1];Beta_ PascalDIVPower2[Beta ,1]; END ENDLOOP ; END--:65--; FOR i:INT IN [ INT[WidthBase^[F]].. INT[LigKernBase^[F]-1 ]] DO K _ i; ReadTfmWord[]; Sw_ (( PascalDIVPower2[(( PascalDIVPower2[(B3*Z),8])+(B2*Z)),8])+(B1*Z))/Beta; IF B0=0 THEN FontInfo^[K].Sc_Sw ELSE IF B0=255 THEN FontInfo^[K].Sc_Sw -Alpha ELSE GOTO Label11; ENDLOOP;IF FontInfo^[WidthBase^[F]].Sc#0 THEN GOTO Label11; IF FontInfo^[HeightBase^[F]].Sc#0 THEN GOTO Label11; IF FontInfo^[DepthBase^[F]].Sc#0 THEN GOTO Label11; IF FontInfo^[ItalicBase^[F]].Sc#0 THEN GOTO Label11; END--:64--;--66: BEGIN FOR i:INT IN [ INT[LigKernBase^[F]].. INT[KernBase^[F]-1 ]] DO K _ i; BEGIN ReadTfmWord[];Qw.B0_B0+0;Qw.B1_B1+0;Qw.B2_B2+0;Qw.B3_B3+0; FontInfo^[K].Qqqq_Qw; END;BEGIN IF( INT[B1]Ec) THEN GOTO Label11 ; END; IF INT[B2]<128 THEN BEGIN IF( INT[B3]Ec) THEN GOTO Label11 ; END ELSE IF INT[B3]>=Nk THEN GOTO Label11; ENDLOOP;IF( INT[Nl]>0)AND ( INT[B0]<128) THEN GOTO Label11; FOR i:INT IN [ INT[KernBase^[F]].. INT[ExtenBase^[F]-1 ]] DO K _ i; ReadTfmWord[]; Sw_ (( PascalDIVPower2[(( PascalDIVPower2[(B3*Z),8])+(B2*Z)),8])+(B1*Z))/Beta; IF B0=0 THEN FontInfo^[K].Sc_Sw ELSE IF B0=255 THEN FontInfo^[K].Sc_Sw -Alpha ELSE GOTO Label11; ENDLOOP; END--:66--;--67: FOR i:INT IN [ INT[ExtenBase^[F]].. INT[ParamBase^[F]-1 ]] DO K _ i; BEGIN ReadTfmWord[]; Qw.B0_B0+0;Qw.B1_B1+0;Qw.B2_B2+0;Qw.B3_B3+0;FontInfo^[K].Qqqq_Qw; END;IF B0#0 THEN BEGIN IF( INT[B0]Ec) THEN GOTO Label11 ; END; IF B1#0 THEN BEGIN IF( INT[B1]Ec) THEN GOTO Label11 ; END; IF B2#0 THEN BEGIN IF( INT[B2]Ec) THEN GOTO Label11 ; END; BEGIN IF( INT[B3]Ec) THEN GOTO Label11 ; END;--:67-- ENDLOOP;--68: BEGIN FOR i:INT IN [ INT[1 ].. INT[Np ]] DO K _ i; IF K=1 THEN BEGIN ReadTfmWord[]; IF INT[B0]>127 THEN Sw_B0-256 ELSE Sw_B0;Sw_Sw*256+B1;Sw_Sw*256+B2; FontInfo^[ParamBase^[F]].Sc_(Sw*16)+( PascalDIVPower2[B3 ,4]); END ELSE BEGIN ReadTfmWord[]; Sw_ (( PascalDIVPower2[(( PascalDIVPower2[(B3*Z),8])+(B2*Z)),8])+(B1*Z))/Beta; IF B0=0 THEN FontInfo^[ParamBase^[F]+K-1].Sc_Sw ELSE IF B0=255 THEN FontInfo^[ParamBase^[F]+K-1].Sc_Sw-Alpha ELSE GOTO Label11; END ENDLOOP; FOR i:INT IN [ INT[ INT[Np]+1 ].. INT[8 ]] DO K _ i; FontInfo^[ParamBase^[F]+K-1].Sc_0 ENDLOOP; END--:68--;--69: FontBc^[F]_Bc;FontEc^[F]_Ec;WidthBase^[F]_WidthBase^[F]-0; LigKernBase^[F]_LigKernBase^[F]-0;KernBase^[F]_KernBase^[F]-0; ExtenBase^[F]_ExtenBase^[F]-0;ParamBase^[F]_ParamBase^[F]-1; FmemPtr_ INT[FmemPtr]+Lf; GOTO Label30--:69----:59--;EXITS Label11 => NULL};BEGIN PascalWriteLn[file: @TermOut]; PascalWriteLongString[file: @TermOut, item: "Bad TFM file for"]; END; SELECT F FROM 1 =>BEGIN {PascalWriteLongString[file: @TermOut, item: " "]; PascalWriteLongString[file: @TermOut, item: "titles!"]};JumpOut[]; END; 2 =>BEGIN {PascalWriteLongString[file: @TermOut, item: " "]; PascalWriteLongString[file: @TermOut, item: "labels!"]};JumpOut[]; END; 3 =>BEGIN {PascalWriteLongString[file: @TermOut, item: " "]; PascalWriteLongString[file: @TermOut, item: "pixels!"]};JumpOut[]; END; 4 =>BEGIN {PascalWriteLongString[file: @TermOut, item: " "]; PascalWriteLongString[file: @TermOut, item: "slants!"]};JumpOut[]; END; 5 =>BEGIN {PascalWriteLongString[file: @TermOut, item: " "]; PascalWriteLongString[file: @TermOut, item: "METAFONT logo!"]};JumpOut[]; END; ENDCASE;EXITS Label30 => NULL}; END; --:58----75:-- FirstString: PROCEDURE[C: PascalInteger] = BEGIN IF StrPtr#C THEN BEGIN {PascalWriteLongString[file: @TermOut, item: " "]; PascalWriteLongString[file: @TermOut, item: "?"]};JumpOut[]; END; WHILE L>0 DO BEGIN BEGIN StrPool^[PoolPtr]_Buffer^[L]; PoolPtr_PoolPtr+1; END;L_L-1; END ENDLOOP ;StrPtr_StrPtr+1; StrStart^[StrPtr]_PoolPtr; END;--:75----81: InterpretXxx: PROCEDURE RETURNS[InterpretXxxResult: KeywordCode] = BEGIN K:PascalInteger; J:PascalInteger;L:PascalInteger[0..13];M:KeywordCode;N1:PascalInteger[0..13];N2:PoolPointer; C:KeywordCode; C_19;CurString_0;{SELECT CurGf FROM 244 => GOTO Label30; 243 =>BEGIN K_SignedQuad[]; GOTO Label30; END;239 =>K_GetByte[]; 240 =>K_GetTwoBytes[];241 =>K_GetThreeBytes[];242 =>K_SignedQuad[]; ENDCASE;--82: J_0;{IF K<2 THEN GOTO Label45;{WHILE TRUE DO BEGIN L_J;IF J=K THEN GOTO Label31; IF J=13 THEN GOTO Label45;J_J+1;Buffer^[J]_GetByte[]; IF Buffer^[J]=32 THEN GOTO Label31; END ENDLOOP ;EXITS Label31 => NULL};--83: FOR i:INT IN [ INT[0 ].. INT[18 ]] DO M _ i; IF(StrStart^[M+1]-StrStart^[M])=L THEN BEGIN N1_0; N2_StrStart^[M]; WHILE( INT[N1]PoolSize THEN BEGIN {PascalWriteLongString[file: @TermOut, item: " "] ; PascalWriteLongString[file: @TermOut, item: "Too many strings!"]};JumpOut[]; END; END;WHILE J NULL};WHILE J NULL};CurGf_GetByte[];InterpretXxxResult_C; END;--:81----84: GetYyy: PROCEDURE RETURNS[GetYyyResult: Scaled] = BEGIN V:Scaled; IF CurGf#243 THEN GetYyyResult_0 ELSE BEGIN V_SignedQuad[]; CurGf_GetByte[];GetYyyResult_V; END; END;--:84----85:-- SkipNop: PROCEDURE = BEGIN K:PascalInteger;J:PascalInteger; {SELECT CurGf FROM 244 => GOTO Label30; 243 =>BEGIN K_SignedQuad[]; GOTO Label30; END;239 =>K_GetByte[]; 240 =>K_GetTwoBytes[];241 =>K_GetThreeBytes[];242 =>K_SignedQuad[]; ENDCASE; FOR i:INT IN [ INT[1 ].. INT[K ]] DO J _ i; CurGf_GetByte[] ENDLOOP;EXITS Label30 => NULL};CurGf_GetByte[]; END;--:85----89: BeginName: PROCEDURE = BEGIN AreaDelimiter_0;ExtDelimiter_0; END;--:89 --90:-- MoreName: PROCEDURE[C: AsciiCode] RETURNS[MoreNameResult: PascalBoolean] = BEGIN IF C=32 THEN MoreNameResult_FALSE ELSE BEGIN IF(C=62)OR (C=47)OR (C=93) THEN BEGIN AreaDelimiter_PoolPtr;ExtDelimiter_0; END ELSE IF(C=46)AND (ExtDelimiter=0) THEN ExtDelimiter_PoolPtr; BEGIN IF INT[PoolPtr+1]>PoolSize THEN BEGIN {PascalWriteLongString[file: @TermOut, item: " "] ; PascalWriteLongString[file: @TermOut, item: "Too many strings!"]};JumpOut[]; END; END;BEGIN StrPool^[PoolPtr]_C; PoolPtr_PoolPtr+1; END;MoreNameResult_TRUE; END; END;--:90----91: EndName: PROCEDURE = BEGIN IF INT[StrPtr+3]>MaxStrings THEN BEGIN {PascalWriteLongString[file: @TermOut, item: " "] ; PascalWriteLongString[file: @TermOut, item: "Too many strings!"]};JumpOut[]; END; IF AreaDelimiter=0 THEN CurArea_0 ELSE BEGIN CurArea_StrPtr; StrPtr_StrPtr+1;StrStart^[StrPtr]_AreaDelimiter+1; END; IF ExtDelimiter=0 THEN BEGIN CurExt_0;CurName_MakeString[]; END ELSE BEGIN CurName_StrPtr;StrPtr_StrPtr+1; StrStart^[StrPtr]_ExtDelimiter;CurExt_MakeString[]; END; END;--:91 --92:-- PackFileName: PROCEDURE[N,A,E: StrNumber] = BEGIN K:PascalInteger; C:AsciiCode;J:PascalInteger;NameLength:PascalInteger[0..FileNameSize]; K_0; FOR i:INT IN [ INT[StrStart^[A]].. INT[StrStart^[A+1]-1 ]] DO J _ i; C_StrPool^[J];K_K+1; IF K<=FileNameSize THEN NameOfFile^[K]_Xchr^[C]; ENDLOOP; FOR i:INT IN [ INT[StrStart^[N]].. INT[StrStart^[N+1]-1 ]] DO J _ i; C_StrPool^[J];K_K+1; IF K<=FileNameSize THEN NameOfFile^[K]_Xchr^[C]; ENDLOOP; FOR i:INT IN [ INT[StrStart^[E]].. INT[StrStart^[E+1]-1 ]] DO J _ i; C_StrPool^[J];K_K+1; IF K<=FileNameSize THEN NameOfFile^[K]_Xchr^[C]; ENDLOOP; IF K<=FileNameSize THEN NameLength_K ELSE NameLength_ FileNameSize; FOR i:INT IN [ INT[NameLength+1 ].. INT[FileNameSize ]] DO K _ i; NameOfFile^[K]_' ENDLOOP; END;--:92 --94:-- StartGf: PROCEDURE = BEGIN {WHILE TRUE DO BEGIN IF CommandLineAlreadyGotten THEN BEGIN BEGIN PascalWriteLn[file: @TermOut];PascalWriteLongString[file: @TermOut, item: "GF file name: "]; END;InputLn[]; END ELSE BEGIN GetCommandLine[];CommandLineAlreadyGotten_TRUE; END; BufPtr_0;Buffer^[LineLength]_63; WHILE Buffer^[BufPtr]=32 DO BufPtr_BufPtr+1 ENDLOOP ; IF INT[BufPtr] NULL};EndName--:95--[];IF CurExt=0 THEN CurExt_19; PackFileName[CurName,CurArea,CurExt];OpenGfFile[]; IF NOT PascalEOF[file: @GfFile.baseFile] THEN GOTO Label40;BEGIN PascalWriteLn[file: @TermOut]; PascalWriteLongString[file: @TermOut, item: "Oops... I can't find file "]; END; PascalWriteLongArrayOfChar[file: @TermOut, item: @NameOfFile^, arrayBound: 128]; END; END ENDLOOP ;EXITS Label40 => NULL};JobName_CurName; PackFileName[JobName,0,20];PressOpenFile[]; END;--:94----111:----98: LoadFonts: PROCEDURE = BEGIN F:InternalFontNumber; I:FourQuarters;J, K, V:PascalInteger;M:PascalInteger[1..8];N1:PascalInteger[0..13];N2:PoolPointer; {IF Interaction THEN--99:--BEGIN DO {--Label45:--BEGIN PascalWriteLn[file: @TermOut]; PascalWriteLongString[file: @TermOut, item: "Special font substitution: "]; END; WHILE TRUE DO BEGIN InputLn[];IF LineLength=0 THEN GOTO Label30;--100: BufPtr_0;Buffer^[LineLength]_32; WHILE Buffer^[BufPtr]#32 DO BufPtr_BufPtr+1 ENDLOOP ; {FOR i:INT IN [ INT[1 ].. INT[8 ]] DO M _ i; IF(StrStart^[M+1]-StrStart^[M])=BufPtr THEN BEGIN N1_ 0;N2_StrStart^[M]; WHILE( INT[N1] NULL};--101:--BufPtr_BufPtr+1; BEGIN IF INT[PoolPtr+LineLength-BufPtr]>PoolSize THEN BEGIN { PascalWriteLongString[file: @TermOut, item: " "]; PascalWriteLongString[file: @TermOut, item: "Too many strings!"]};JumpOut[]; END; END; WHILE INT[BufPtr]4 THEN FontArea^[M-4]_MakeString [] ELSE BEGIN FontName^[M]_ MakeString[];FontArea^[M]_0;FontAt^[M]_0; END; InitStrPtr_StrPtr--:101--;PascalWriteLongString[file: @TermOut, item: "OK; any more? "]; END ENDLOOP ;EXIT; EXITS Label45 => NULL} ENDLOOP; END; EXITS Label30 => NULL};--:99--FontsNotLoaded_FALSE; FOR i:INT IN [ INT[1 ].. INT[5 ]] DO F _ i; IF(F#4)OR ( INT[(StrStart^[FontName^[F]+1]-StrStart^ [FontName^[F]])]>0) THEN BEGIN IF(StrStart^[FontArea^[F]+1]-StrStart^ [FontArea^[F]])=0 THEN FontArea^[F]_34; PackFileName[FontName^[F],FontArea^[F],21];OpenTfmFile[]; ReadFontInfo[F,FontAt^[F]];IF FontArea^[F]=34 THEN FontArea^[F]_0; FontPressCode^[F]_PressGetFontCode[F]; END ENDLOOP;--134: IF(StrStart^[FontName^[4]+1]-StrStart^[FontName^[4]])=0 THEN RuleSlant _0.0 ELSE BEGIN RuleSlant_PascalFLOAT[FontInfo^[1+ParamBase^[4]].Sc]/PascalFLOAT[65536]; SlantN_FontEc^[4];I_FontInfo^[CharBase^[4]+SlantN].Qqqq; SlantUnit_PascalFLOAT[FontInfo^[ HeightBase^[4]+PascalDIVPower2[(I.B1-0),4]].Sc]/PascalFLOAT[SlantN]; END; SlantReported_0.0;--:134----170:--I_FontInfo^[CharBase^[3]+1].Qqqq; IF NOT ( INT[I.B0]>0) THEN BEGIN {PascalWriteLongString[file: @TermOut, item: " "]; PascalWriteLongString[file: @TermOut, item: "Missing pixel char!"]}; JumpOut[]; END;UnscXRatio_FontInfo^[WidthBase^[3]+I.B0].Sc; XRatio_UnscXRatio/PascalFLOAT[65536]; UnscYRatio_FontInfo^[ HeightBase^[3]+PascalDIVPower2[(I.B1-0),4]].Sc; YRatio_UnscYRatio/PascalFLOAT[65536]; UnscSlantRatio_PascalFLOAT[FontInfo^[1+ParamBase^[3]].Sc]*YRatio; SlantRatio_UnscSlantRatio/PascalFLOAT[65536]; IF XRatio*YRatio=PascalFLOAT[0 ] THEN BEGIN {PascalWriteLongString[file: @TermOut, item: " "] ; PascalWriteLongString[file: @TermOut, item: "Vanishing pixel size!"]};JumpOut[]; END; FudgeFactor_(SlantRatio/XRatio)/YRatio;--:170----176: GrayRuleThickness_FontInfo^[8+ParamBase^[3]].Sc; IF GrayRuleThickness=0 THEN GrayRuleThickness_26214;--:176----185: I_FontInfo^[CharBase^[3]+0].Qqqq; IF NOT ( INT[I.B0]>0) THEN BEGIN {PascalWriteLongString[file: @TermOut, item: " "]; PascalWriteLongString[file: @TermOut, item: "Missing dot char!"]}; JumpOut[]; END;DotWidth_FontInfo^[WidthBase^[3]+I.B0].Sc; DotHeight_FontInfo^[ HeightBase^[3]+PascalDIVPower2[(I.B1-0),4]].Sc; Delta_ PascalDIVPower2[FontInfo^[2+ParamBase^[2]].Sc ,1]; ThriceXHeight_3*FontInfo^[5+ParamBase^[2]].Sc; HalfXHeight_ ThriceXHeight /6;--:185----203: FOR i:INT IN [ INT[0 ].. INT[4095 ]] DO K _ i; B^[K]_0 ENDLOOP; FOR i:INT IN [ INT[FontBc^[3]].. INT[FontEc^[3]]] DO K _ i; IF K>=1 THEN IF K<=120 THEN IF( INT[FontInfo^[CharBase^[3]+K].Qqqq.B0]>0) THEN BEGIN V_C^[K];DO B^[V]_K; V_V+D^[K]; IF V>4095 THEN EXIT; ENDLOOP; END ENDLOOP;--:203----204: FOR i:INT IN [ INT[0 ].. INT[11 ]] DO J _ i; K_TwoToThe^[J];V_K;DO R^[V]_K;V_V+K+K; IF V>4095 THEN EXIT; ENDLOOP; ENDLOOP;R^[0]_4096;--:204-- END;--:98----:111----114: END.