-- file: MFFinalizeImpl.mesa -- Pascal-to-Mesa translator output, translated at October 31, 1985 4:28:03 pm PST DIRECTORY PascalBasic, PascalWizardFiles, MFTypes, MFProcArray, MFExternals, MFInteraction, MFMath, MFMemory, MFSymbols, MFInput, MFFileNames, MFOps, MFTFM, MFGF, MFRest, MFOctants; MFFinalizeImpl: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, MFProcArray, MFExternals, MFInteraction, MFMath, MFMemory, MFSymbols, MFInput, MFFileNames, MFOps, MFTFM, MFGF, MFRest, MFOctants EXPORTS MFRest = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, MFTypes, MFProcArray, MFExternals, MFInteraction, MFMath, MFMemory, MFSymbols, MFInput, MFFileNames, MFOps, MFTFM, MFGF, MFRest, MFOctants; CloseFilesAndTerminate: PROCEDURE = BEGIN K:PascalInteger;Lh:PascalInteger;P:Halfword; X:Scaled; TfmFinishUpTheFile: PROCEDURE = BEGIN--1133: IF JobName=0 THEN OpenLogFile[];PackJobName[902]; WHILE NOT BOpenOut[@TfmFile]DO PromptFileName[903,902] ENDLOOP ; MetricFileName_BMakeNameString[@TfmFile];--1134:--K_HeaderSize; WHILE INT[HeaderByte^[K]]<0 DO K_K-1 ENDLOOP ;Lh_ PascalDIVPower2[(K+3),2];IF INT[Bc]>Ec THEN Bc_1; TfmTwo[6+Lh+(Ec-Bc+1)+Nw+Nh+Nd+Ni+Nl+Nk+Ne+Np];TfmTwo[Lh];TfmTwo[Bc]; TfmTwo[Ec];TfmTwo[Nw];TfmTwo[Nh];TfmTwo[Nd];TfmTwo[Ni];TfmTwo[Nl]; TfmTwo[Nk];TfmTwo[Ne];TfmTwo[Np]; FOR i:INT IN [ INT[1 ].. INT[4*Lh ]] DO K _ i; IF INT[HeaderByte^[K]]<0 THEN HeaderByte^[K]_0; {grossExprHack:EightBits _ HeaderByte^[K]; PascalWriteLong[file: @TfmFile.baseFile, length: SIZE[EightBits, 2], element: @TfmFile.element, item: @grossExprHack]};--:1134-- ENDLOOP;--1136: FOR i:INT IN [ INT[Bc ].. INT[Ec ]] DO K _ i; IF NOT CharExists^[K] THEN TfmFour[0] ELSE BEGIN {grossExprHack:EightBits _ Mem[TfmWidth^[K]]^.Hh.Lh; PascalWriteLong[file: @TfmFile.baseFile, length: SIZE[EightBits, 2], element: @TfmFile.element, item: @grossExprHack]}; {grossExprHack:EightBits _ INT[(Mem[TfmHeight^[K]]^.Hh.Lh)]*16+Mem[TfmDepth^[K]]^.Hh.Lh; PascalWriteLong[file: @TfmFile.baseFile, length: SIZE[EightBits, 2], element: @TfmFile.element, item: @grossExprHack]}; {grossExprHack:EightBits _ INT[(Mem[TfmItalCorr^[K]]^.Hh.Lh)]*4+CharTag^[K]; PascalWriteLong[file: @TfmFile.baseFile, length: SIZE[EightBits, 2], element: @TfmFile.element, item: @grossExprHack]}; {grossExprHack:EightBits _ CharRemainder^[K]; PascalWriteLong[file: @TfmFile.baseFile, length: SIZE[EightBits, 2], element: @TfmFile.element, item: @grossExprHack]}; END--:1136-- ENDLOOP;--1137:--TfmChanged_0; FOR i:INT IN [ INT[1 ].. INT[4 ]] DO K _ i; TfmFour[0];P_DimenHead^[K]; WHILE P#19 DO BEGIN TfmFour[DimenOut[Mem[ INT[P]+1]^.Int]];P_Mem[P]^.Hh.Rh; END ENDLOOP ;--:1137-- ENDLOOP;--1138:--FOR i:INT IN [ INT[0 ].. INT[Nl-1 ]] DO K _ i; TfmQqqq[LigKern^[K]] ENDLOOP; FOR i:INT IN [ INT[0 ].. INT[Nk-1 ]] DO K _ i; TfmFour[DimenOut[Kern^[K]]]--:1138-- ENDLOOP;--1139: FOR i:INT IN [ INT[0 ].. INT[Ne-1 ]] DO K _ i; TfmQqqq[Exten^[K]]--:1139-- ENDLOOP;--1140: FOR i:INT IN [ INT[1 ].. INT[Np ]] DO K _ i; IF K=1 THEN IF ABS[Param^[1]]<134217728 THEN TfmFour[ Param^[1]*16] ELSE BEGIN TfmChanged_TfmChanged+1; IF Param^[1]>0 THEN TfmFour[2147483647] ELSE TfmFour[-2147483647]; END ELSE TfmFour[DimenOut[Param^[K]]] ENDLOOP; IF TfmChanged>0 THEN BEGIN IF TfmChanged=1 THEN PrintNl[905] ELSE BEGIN PrintNl[40];PrintInt[TfmChanged];Print[906]; END;Print[907]; END--:1140--;IF Internal^[12]>0 THEN--1135:--BEGIN {PascalWriteLongString[file: @LogFile, item: " "]; PascalWriteLn[file: @LogFile]}; {PascalWriteLongString[file: @LogFile, item: "(You used "]; PascalWriteInteger[file: @LogFile, item: Nw, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "w,"]; PascalWriteInteger[file: @LogFile, item: Nh, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "h,"]; PascalWriteInteger[file: @LogFile, item: Nd, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "d,"]; PascalWriteInteger[file: @LogFile, item: Ni, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "i,"]; PascalWriteInteger[file: @LogFile, item: Nl , fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "l,"]; PascalWriteInteger[file: @LogFile, item: Nk, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "k,"]; PascalWriteInteger[file: @LogFile, item: Ne, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "e,"]; PascalWriteInteger[file: @LogFile, item: Np, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "p metric file positions"]; PascalWriteLn[file: @LogFile]}; {PascalWriteLongString[file: @LogFile, item: " out of "]; PascalWriteLongString[file: @LogFile, item: "256w,16h,16d,64i,"]; PascalWriteInteger[file: @LogFile, item: LigTableSize, fieldMinLength: 1] ; PascalWriteLongString[file: @LogFile, item: "l,256k,256e,"]; PascalWriteInteger[file: @LogFile, item: MaxFontDimen, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "p)"]; PascalWriteLn[file: @LogFile]}; END--:1135--;PrintNl[904]; Print[MetricFileName];BClose[@TfmFile]--:1133--; END; GfFinishUpTheFile: PROCEDURE = BEGIN--1181: BEGIN BEGIN GfBuf^[GfPtr]_248;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;GfFour[GfPrevPtr]; GfPrevPtr_GfOffset+GfPtr-5;GfFour[Internal^[26]*16]; FOR i:INT IN [ INT[1 ].. INT[4 ]] DO K _ i; GfBuf^[GfPtr]_HeaderByte^[K];GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; ENDLOOP;GfFour[Internal^[27]]; GfFour[Internal^[28]];GfFour[GfMinM];GfFour[GfMaxM]; GfFour[GfMinN];GfFour[GfMaxN]; FOR i:INT IN [ INT[0 ].. INT[255 ]] DO K _ i; IF CharExists^[K] THEN BEGIN X_ PascalDIVPower2[GfDx^[K],16]; IF(GfDy^[K]=0)AND (X>=0)AND (X<256)AND (GfDx^[K]=X*65536) THEN BEGIN BEGIN GfBuf^[GfPtr]_246;GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END;BEGIN GfBuf^[GfPtr]_K;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;BEGIN GfBuf^[GfPtr]_X; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END; END ELSE BEGIN BEGIN GfBuf^[GfPtr]_245;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;BEGIN GfBuf^[GfPtr]_K; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END;GfFour[GfDx^[K]]; GfFour[GfDy^[K]]; END;X_Mem[TfmWidth^[K]+1]^.Int; IF ABS[X]>MaxTfmDimen THEN IF X>0 THEN X_16777215 ELSE X_-16777215 ELSE X_MakeScaled[X*16,Internal^[26]];GfFour[X];GfFour[CharPtr^[K]]; END ENDLOOP;BEGIN GfBuf^[GfPtr]_249;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;GfFour[GfPrevPtr]; BEGIN GfBuf^[GfPtr]_131;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;K_4+( PascalMODPower2Mask[(GfBufSize-GfPtr),3]); WHILE K>0 DO BEGIN BEGIN GfBuf^[GfPtr]_223;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;K_K-1; END ENDLOOP ;--1155: IF GfLimit=HalfBuf THEN WriteGf[HalfBuf,GfBufSize-1]; IF INT[GfPtr]>0 THEN WriteGf[0,GfPtr-1]--:1155--;PrintNl[918]; Print[OutputFileName];Print[426];PrintInt[TotalChars];Print[919]; IF TotalChars#1 THEN PrintChar[115];Print[920]; PrintInt[GfOffset+GfPtr];Print[921];BClose[@GfFile]; END--:1181--; END; --1205: IF Internal^[12]>0 THEN--1207: IF INT[JobName]>0 THEN BEGIN {PascalWriteLongString[file: @LogFile, item: " "]; PascalWriteLn[file: @LogFile]}; {PascalWriteLongString[file: @LogFile, item: "Here is how much of METAFONT's memory"]; PascalWriteLongString[file: @LogFile, item: " you used:"]; PascalWriteLn[file: @LogFile]}; {PascalWriteLongString[file: @LogFile, item: " "]; PascalWriteInteger[file: @LogFile, item: MaxStrPtr-InitStrPtr, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: " string"]}; IF MaxStrPtr#InitStrPtr+1 THEN PascalWriteLongString[file: @LogFile, item: "s"]; {PascalWriteLongString[file: @LogFile, item: " out of "]; PascalWriteInteger[file: @LogFile, item: MaxStrings-InitStrPtr, fieldMinLength: 1]; PascalWriteLn[file: @LogFile]}; {PascalWriteLongString[file: @LogFile, item: " "]; PascalWriteInteger[file: @LogFile, item: MaxPoolPtr-InitPoolPtr, fieldMinLength: 1] ; PascalWriteLongString[file: @LogFile, item: " string characters out of "]; PascalWriteInteger[file: @LogFile, item: PoolSize-InitPoolPtr, fieldMinLength: 1]; PascalWriteLn[file: @LogFile]}; {PascalWriteLongString[file: @LogFile, item: " "]; PascalWriteInteger[file: @LogFile, item: INT[LoMemMax+0]+MemEnd-HiMemMin+2, fieldMinLength: 1] ; PascalWriteLongString[file: @LogFile, item: " words of memory out of "]; PascalWriteInteger[file: @LogFile, item: INT[MemEnd]+1, fieldMinLength: 1]; PascalWriteLn[file: @LogFile]}; {PascalWriteLongString[file: @LogFile, item: " "]; PascalWriteInteger[file: @LogFile, item: StCount, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: " symbolic tokens out of "]; PascalWriteInteger[file: @LogFile, item: 2100, fieldMinLength: 1]; PascalWriteLn[file: @LogFile]}; {PascalWriteLongString[file: @LogFile, item: " "]; PascalWriteInteger[file: @LogFile, item: MaxInStack, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "i,"]; PascalWriteInteger[file: @LogFile, item: IntPtr, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "n,"]; PascalWriteInteger[file: @LogFile, item: MaxRoundingPtr , fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "r,"]; PascalWriteInteger[file: @LogFile, item: MaxParamStack, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "p,"]; PascalWriteInteger[file: @LogFile, item: MaxBufStack+1, fieldMinLength: 1] ; PascalWriteLongString[file: @LogFile, item: "b stack positions out of "]; PascalWriteInteger[file: @LogFile, item: StackSize, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "i,"]; PascalWriteInteger[file: @LogFile, item: MaxInternal, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "n,"] ; PascalWriteInteger[file: @LogFile, item: MaxWiggle, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "r,"]; PascalWriteInteger[file: @LogFile, item: 150, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "p,"]; PascalWriteInteger[file: @LogFile, item: BufSize, fieldMinLength: 1]; PascalWriteLongString[file: @LogFile, item: "b"]; PascalWriteLn[file: @LogFile]}; END--:1207--;IF(GfPrevPtr>0)OR (Internal^[33]>0) THEN BEGIN--1206:--Rover_23; Mem[Rover]^.Hh.Rh_65535;LoMemMax_ INT[HiMemMin]-1; IF INT[LoMemMax]-Rover>65535 THEN LoMemMax_ INT[65535]+Rover; Mem[Rover]^.Hh.Lh_ INT[LoMemMax]-Rover;Mem[ INT[Rover]+1]^.Hh.Lh_Rover; Mem[ INT[Rover]+1]^.Hh.Rh_Rover;Mem[LoMemMax]^.Hh.Rh_0; Mem[LoMemMax]^.Hh.Lh_0--:1206--;--1123:--Mem[49999]^.Hh.Rh_19; FOR i:INT IN [ INT[Bc ].. INT[Ec ]] DO K _ i; IF CharExists^[K] THEN TfmWidth^[K]_SortIn[TfmWidth ^[K]] ENDLOOP;Nw_Skimp[255]+1;DimenHead^[1]_Mem[49999]^.Hh.Rh; IF Perturbation>=4096 THEN TfmWarning[20]--:1123--;FixDesignSize[]; FixCheckSum[];IF Internal^[33]>0 THEN BEGIN--1125:--Mem[49999]^.Hh.Rh_19; FOR i:INT IN [ INT[Bc ].. INT[Ec ]] DO K _ i; IF CharExists^[K] THEN IF TfmHeight^[K]=0 THEN TfmHeight^[K]_15 ELSE TfmHeight^[K]_SortIn[TfmHeight^[K]] ENDLOOP; Nh_Skimp[15]+1;DimenHead^[2]_Mem[49999]^.Hh.Rh; IF Perturbation>=4096 THEN TfmWarning[21];Mem[49999]^.Hh.Rh_19; FOR i:INT IN [ INT[Bc ].. INT[Ec ]] DO K _ i; IF CharExists^[K] THEN IF TfmDepth^[K]=0 THEN TfmDepth^[K]_15 ELSE TfmDepth^[K]_SortIn[TfmDepth^[K]] ENDLOOP; Nd_Skimp[15]+1;DimenHead^[3]_Mem[49999]^.Hh.Rh; IF Perturbation>=4096 THEN TfmWarning[22];Mem[49999]^.Hh.Rh_19; FOR i:INT IN [ INT[Bc ].. INT[Ec ]] DO K _ i; IF CharExists^[K] THEN IF TfmItalCorr^[K]=0 THEN TfmItalCorr^[K]_15 ELSE TfmItalCorr^[K]_SortIn[TfmItalCorr^[K]] ENDLOOP; Ni_Skimp[63]+1;DimenHead^[4]_Mem[49999]^.Hh.Rh; IF Perturbation>=4096 THEN TfmWarning[23]--:1125--; TfmFinishUpTheFile[]; END;IF GfPrevPtr>0 THEN GfFinishUpTheFile[]; END--:1205--;IF INT[JobName]>0 THEN BEGIN PascalWriteLn[file: @LogFile];AClose[@LogFile]; Selector_Selector-2;IF Selector=1 THEN BEGIN PrintNl[930]; Print[LogName];PrintChar[46];PrintLn[]; END; END; END;--:1204----1208: FinalCleanup: PROCEDURE = BEGIN C:SmallNumber; C_CurMod; IF JobName=0 THEN OpenLogFile[]; WHILE CondPtr#0 DO BEGIN PrintNl[931];PrintCmdMod[2,CurIf]; IF IfLine#0 THEN BEGIN Print[137];PrintInt[IfLine]; END;Print[932]; IfLine_Mem[ INT[CondPtr]+1]^.Int;CurIf_Mem[CondPtr]^.Hh.B1; CondPtr_Mem[CondPtr]^.Hh.Rh; END ENDLOOP ; IF History#0 THEN IF((History=1)OR ( INT[Interaction]<3)) THEN IF Selector=3 THEN BEGIN Selector_1;PrintNl[933];Selector_3; END; {IF C=1 THEN BEGIN IF StartLikeInimf THEN BEGIN StoreBaseFile[]; GOTO Label10; END ELSE BEGIN PrintNl[934]; GOTO Label10; END; END;EXITS Label10 => NULL}; END;--:1208 END.