-- file: MFGFImpl.mesa -- Pascal-to-Mesa translator output, translated at October 31, 1985 4:28:02 pm PST DIRECTORY PascalBasic, PascalWizardFiles, MFTypes, MFExternals, MFInteraction, MFMath, MFSymbols, MFFileNames, MFGF, MFOps; MFGFImpl: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, MFExternals, MFInteraction, MFMath, MFSymbols, MFFileNames, MFOps EXPORTS MFGF = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, MFTypes, MFExternals, MFInteraction, MFMath, MFSymbols, MFFileNames, MFGF, MFOps; --:781----784:-- GfExt: StrNumber; --:1129----1148: GfMinM: PascalInteger; GfMaxM: PascalInteger; GfMinN: PascalInteger; GfMaxN: PascalInteger; GfPrevPtr: PascalInteger; TotalChars: PascalInteger; CharPtr: LONG POINTER TO ARRAY EightBits OF PascalInteger _ PascalStaticZone.NEW[ARRAY EightBits OF PascalInteger]; GfDx: LONG POINTER TO ARRAY EightBits OF PascalInteger _ PascalStaticZone.NEW[ARRAY EightBits OF PascalInteger]; GfDy: LONG POINTER TO ARRAY EightBits OF PascalInteger _ PascalStaticZone.NEW[ARRAY EightBits OF PascalInteger]; --:1148----1151: GfBuf: LONG POINTER TO ARRAY GfIndex OF EightBits _ PascalStaticZone.NEW[ARRAY GfIndex OF EightBits]; HalfBuf: GfIndex; GfLimit: GfIndex; GfPtr: GfIndex; GfOffset: PascalInteger; WriteGf: PROCEDURE[A,B: GfIndex] = BEGIN K:GfIndex; FOR i:INT IN [ INT[A ].. INT[B ]] DO K _ i; {grossExprHack:EightBits _ GfBuf^[K]; PascalWriteLong[file: @GfFile.baseFile, length: SIZE[EightBits, 2], element: @GfFile.element, item: @grossExprHack]} ENDLOOP; END; --:1153----1154:-- GfSwap: PROCEDURE = BEGIN IF GfLimit=GfBufSize THEN BEGIN WriteGf[0,HalfBuf-1]; GfLimit_HalfBuf;GfOffset_GfOffset+GfBufSize;GfPtr_0; END ELSE BEGIN WriteGf[HalfBuf,GfBufSize-1];GfLimit_GfBufSize; END; END;--:1154----1156:-- GfFour: PROCEDURE[X: PascalInteger] = BEGIN IF X>=0 THEN BEGIN GfBuf^[GfPtr]_ PascalDIVPower2[X ,24]; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END ELSE BEGIN X_X+1073741824;X_X+1073741824; BEGIN GfBuf^[GfPtr]_( PascalDIVPower2[X ,24])+128;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END; END;X_ PascalMODPower2Mask[X ,16777215]; BEGIN GfBuf^[GfPtr]_ PascalDIVPower2[X ,16];GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;X_ PascalMODPower2Mask[X ,65535]; BEGIN GfBuf^[GfPtr]_ PascalDIVPower2[X ,8];GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;BEGIN GfBuf^[GfPtr]_ PascalMODPower2Mask[X ,255]; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END; END;--:1156----1157: GfTwo: PROCEDURE[X: PascalInteger] = BEGIN BEGIN GfBuf^[GfPtr]_ PascalDIVPower2[X ,8]; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END; BEGIN GfBuf^[GfPtr]_ PascalMODPower2Mask[X ,255];GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END; END; GfThree: PROCEDURE[X: PascalInteger] = BEGIN BEGIN GfBuf^[GfPtr]_ PascalDIVPower2[X ,16];GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END; BEGIN GfBuf^[GfPtr]_ PascalDIVPower2[( PascalMODPower2Mask[X ,65535]),8];GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;BEGIN GfBuf^[GfPtr]_ PascalMODPower2Mask[X ,255]; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END; END;--:1157----1158: GfPaint: PROCEDURE[D: PascalInteger] = BEGIN IF D<64 THEN BEGIN GfBuf^[GfPtr]_0+D;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END ELSE IF D<256 THEN BEGIN BEGIN GfBuf^[GfPtr]_64;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;BEGIN GfBuf^[GfPtr]_D; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END; END ELSE BEGIN BEGIN GfBuf^[GfPtr]_65;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;GfTwo[D]; END; END;--:1158----1159: GfString: PROCEDURE[S,T: StrNumber] = BEGIN K:PoolPointer;L:PascalInteger; IF S#0 THEN BEGIN L_(StrStart^[S+1]-StrStart^[S]); IF T#0 THEN L_L+(StrStart^[T+1]-StrStart^[T]); IF L<=255 THEN BEGIN BEGIN GfBuf^[GfPtr]_239;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;BEGIN GfBuf^[GfPtr]_L; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END; END ELSE BEGIN BEGIN GfBuf^[GfPtr]_241;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;GfThree[L]; END; FOR i:INT IN [ INT[StrStart^[S]].. INT[StrStart^[S+1]-1 ]] DO K _ i; GfBuf^[GfPtr]_StrPool ^[K];GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; ENDLOOP; END; IF T#0 THEN FOR i:INT IN [ INT[StrStart^[T]].. INT[StrStart^[T+1]-1 ]] DO K _ i; GfBuf^ [GfPtr]_StrPool^[K];GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; ENDLOOP; END;--:1159----1160:-- GfBoc: PROCEDURE[MinM,MaxM,MinN,MaxN: PascalInteger] = BEGIN IF MinMGfMaxN THEN GfMaxN_MaxN; {IF BocP=-1 THEN IF BocC>=0 THEN IF BocC<256 THEN IF MaxM-MinM>=0 THEN IF MaxM-MinM<256 THEN IF MaxM>=0 THEN IF MaxM<256 THEN IF MaxN -MinN>=0 THEN IF MaxN-MinN<256 THEN IF MaxN>=0 THEN IF MaxN<256 THEN BEGIN BEGIN GfBuf^[GfPtr]_68;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;BEGIN GfBuf^[GfPtr]_BocC; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END; BEGIN GfBuf^[GfPtr]_MaxM-MinM;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;BEGIN GfBuf^[GfPtr]_MaxM; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END; BEGIN GfBuf^[GfPtr]_MaxN-MinN;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;BEGIN GfBuf^[GfPtr]_MaxN; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END; GOTO Label10; END; BEGIN GfBuf^[GfPtr]_67;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;GfFour[BocC];GfFour[BocP]; GfFour[MinM];GfFour[MaxM];GfFour[MinN];GfFour[MaxN];EXITS Label10 => NULL}; END; --:1160----1162:-- InitGf: PROCEDURE = BEGIN K:EightBits;T:PascalInteger; GfMinM_4096;GfMaxM_-4096;GfMinN_4096;GfMaxN_-4096; FOR i:INT IN [ INT[0 ].. INT[255 ]] DO K _ i; CharPtr^[K]_-1 ENDLOOP;--1163: IF Internal^[27]<=0 THEN GfExt_909 ELSE BEGIN OldSetting_Selector; Selector_5;PrintChar[46]; PrintInt[MakeScaled[Internal^[27],59429463]];Print[910]; GfExt_MakeString[];Selector_OldSetting; END--:1163--; BEGIN IF JobName=0 THEN OpenLogFile[];PackJobName[GfExt]; WHILE NOT BOpenOut[@GfFile]DO PromptFileName[621,GfExt] ENDLOOP ; OutputFileName_BMakeNameString[@GfFile]; END; BEGIN GfBuf^[GfPtr]_247;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;BEGIN GfBuf^[GfPtr]_131; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END; OldSetting_Selector;Selector_5;Print[908]; PrintInt[RoundUnscaled[Internal^[14]]];PrintChar[46]; PrintDd[RoundUnscaled[Internal^[15]]];PrintChar[46]; PrintDd[RoundUnscaled[Internal^[16]]];PrintChar[58]; T_RoundUnscaled[Internal^[17]];PrintDd[ T /60];PrintDd[ T MOD 60]; Selector_OldSetting; BEGIN GfBuf^[GfPtr]_(PoolPtr-StrStart^[StrPtr]);GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;StrStart^[StrPtr+1]_PoolPtr; GfString[0,StrPtr];PoolPtr_StrStart^[StrPtr]; GfPrevPtr_GfOffset+GfPtr; END;--:1162----1164: END.