-- file: GFTypeImpl2.mesa -- Pascal-to-Mesa translator output, translated at October 18, 1985 11:15:21 am PDT DIRECTORY PascalBasic, PascalWizardFiles, GFTypePrivate; GFTypeImpl2: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, GFTypePrivate EXPORTS GFTypePrivate = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, GFTypePrivate; OpenGfFile: PROCEDURE = BEGIN ByteFileReset[@GfFile,Alfa['g, 'f, ' , ' , ' , ' , ' , ' , ' , ' ]];CurLoc_0; END;--:22----24: GetByte: PROCEDURE RETURNS[GetByteResult: PascalInteger] = BEGIN B:EightBits; IF PascalEOF[file: @GfFile.baseFile] THEN GetByteResult_0 ELSE BEGIN PascalReadLong[file: @GfFile.baseFile, length: SIZE[EightBits, 2], element: @GfFile.element, item: @B]; CurLoc_CurLoc+1;GetByteResult_B; END; END; GetTwoBytes: PROCEDURE RETURNS[GetTwoBytesResult: PascalInteger] = BEGIN A, B:EightBits; PascalReadLong[file: @GfFile.baseFile, length: SIZE[EightBits, 2], element: @GfFile.element, item: @A];PascalReadLong[file: @GfFile.baseFile, length: SIZE[EightBits, 2], element: @GfFile.element, item: @B]; CurLoc_CurLoc+2;GetTwoBytesResult_A*256+B; END; GetThreeBytes: PROCEDURE RETURNS[GetThreeBytesResult: PascalInteger] = BEGIN A, B, C:EightBits; PascalReadLong[file: @GfFile.baseFile, length: SIZE[EightBits, 2], element: @GfFile.element, item: @A];PascalReadLong[file: @GfFile.baseFile, length: SIZE[EightBits, 2], element: @GfFile.element, item: @B];PascalReadLong[file: @GfFile.baseFile, length: SIZE[EightBits, 2], element: @GfFile.element, item: @C]; CurLoc_CurLoc+3;GetThreeBytesResult_ INT[(A*256+B)]*256+C; END; SignedQuad: PROCEDURE RETURNS[SignedQuadResult: PascalInteger] = BEGIN A, B, C, D:EightBits; PascalReadLong[file: @GfFile.baseFile, length: SIZE[EightBits, 2], element: @GfFile.element, item: @A];PascalReadLong[file: @GfFile.baseFile, length: SIZE[EightBits, 2], element: @GfFile.element, item: @B];PascalReadLong[file: @GfFile.baseFile, length: SIZE[EightBits, 2], element: @GfFile.element, item: @C];PascalReadLong[file: @GfFile.baseFile, length: SIZE[EightBits, 2], element: @GfFile.element, item: @D]; CurLoc_CurLoc+4; IF INT[A]<128 THEN SignedQuadResult_( INT[(A*256+B)]*256+C)*256+D ELSE SignedQuadResult_(( INT[( A-256)]*256+B)*256+C)*256+D; END;--:24----29:-- DoChar: PROCEDURE RETURNS[DoCharResult: PascalBoolean] = BEGIN O:EightBits;P, Q:PascalInteger;Aok:PascalBoolean; Aok_TRUE; {{WHILE TRUE DO--50:--BEGIN A_CurLoc;O_GetByte[];P_FirstPar[O]; IF PascalEOF[file: @GfFile.baseFile] THEN BEGIN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLongString[file: @Output, item: "Bad GF file: "] ; PascalWriteLongString[file: @Output, item: "the file ended prematurely"]; PascalWriteLongString[file: @Output, item: "!"]};JumpOut[]; END;--51:--IF INT[O]<=67 THEN--56: BEGIN IF WantsMnemonics THEN PascalWriteLongString[file: @Output, item: " paint "];DO--57: IF WantsMnemonics THEN IF PaintSwitch=0 THEN {PascalWriteLongString[file: @Output, item: "("]; PascalWriteInteger[file: @Output, item: P, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ")"]} ELSE PascalWriteInteger[file: @Output, item: P, fieldMinLength: 1];M_M+P;IF M>MaxMObserved THEN MaxMObserved_M-1; IF WantsPixels THEN--58: IF PaintSwitch=1 THEN IF N<=MaxSubrow THEN BEGIN L_M-P;R_M-1; IF R>MaxSubcol THEN R_MaxSubcol;M_L; WHILE M<=R DO BEGIN ImageArray^[M][N]_1;M_M+1; END ENDLOOP ;M_L+P; END--:58--; PaintSwitch_1-PaintSwitch--:57--;A_CurLoc;O_GetByte[]; P_FirstPar[O];IF PascalEOF[file: @GfFile.baseFile] THEN BEGIN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLongString[file: @Output, item: "Bad GF file: "] ; PascalWriteLongString[file: @Output, item: "the file ended prematurely"]; PascalWriteLongString[file: @Output, item: "!"]};JumpOut[]; END; IF INT[O]>67 THEN EXIT; ENDLOOP; END--:56--; SELECT O FROM 70,71,72,73 =>--60:--BEGIN IF WantsMnemonics THEN BEGIN PascalWriteLn[file: @Output]; {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "skip"] ; PascalWriteInteger[file: @Output, item: PascalMODPower2Mask[(O-70),3], fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " "]; PascalWriteInteger[file: @Output, item: P, fieldMinLength: 1]}; END;N_N+P+1;M_0; PaintSwitch_0; IF WantsMnemonics THEN {PascalWriteLongString[file: @Output, item: " (n="]; PascalWriteInteger[file: @Output, item: MaxNStated-N, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ")"]}; END--:60--; 74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97, 98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115, 116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133, 134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151, 152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169, 170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187, 188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205, 206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238 =>--59: BEGIN IF WantsMnemonics THEN BEGIN PascalWriteLn[file: @Output]; {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "newrow "]; PascalWriteInteger[file: @Output, item: P, fieldMinLength: 1]}; END;N_N+1;M_P;PaintSwitch_1; IF WantsMnemonics THEN {PascalWriteLongString[file: @Output, item: " (n="]; PascalWriteInteger[file: @Output, item: MaxNStated-N, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ")"]}; END--:59--; --52:--244 =>IF WantsMnemonics THEN BEGIN PascalWriteLn[file: @Output];{PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "no op"]}; END;247 =>BEGIN BEGIN {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "! "] ; PascalWriteLongString[file: @Output, item: "preamble command within a character!"]};PascalWriteLn[file: @Output]; END; GOTO Label9998; END; 248,249 =>BEGIN BEGIN {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "! "] ; PascalWriteLongString[file: @Output, item: "postamble command within a character!"]};PascalWriteLn[file: @Output]; END; GOTO Label9998; END; 67,68 =>BEGIN BEGIN {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "! "]; PascalWriteLongString[file: @Output, item: "boc occurred before eoc!"]}; PascalWriteLn[file: @Output]; END; GOTO Label9998; END; 69 =>BEGIN IF WantsMnemonics THEN BEGIN PascalWriteLn[file: @Output];{PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "eoc"]}; END;PascalWriteLn[file: @Output]; GOTO Label9999; END;--:52--239,240,241,242 =>--53: BEGIN IF WantsMnemonics THEN BEGIN PascalWriteLn[file: @Output];{PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "xxx '"]}; END;BadChar_FALSE;B_16;IF P<0 THEN BEGIN PascalWriteLn[file: @Output]; {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "! "]; PascalWriteLongString[file: @Output, item: "string of negative length!"]};PascalWriteLn[file: @Output]; END; WHILE P>0 DO BEGIN Q_GetByte[];IF(Q<32)OR (Q>126) THEN BadChar_TRUE; IF WantsMnemonics THEN BEGIN PascalWriteChar[file: @Output, item: Xchr^[Q]]; IF B--55:--BEGIN IF WantsMnemonics THEN BEGIN PascalWriteLn[file: @Output]; {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "yyy "]; PascalWriteInteger[file: @Output, item: P, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " ("]}; END; IF WantsMnemonics THEN BEGIN PrintScaled[P];PascalWriteLongString[file: @Output, item: ")"]; END; END--:55--; ENDCASE =>BEGIN {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "! "]; PascalWriteLongString[file: @Output, item: "undefined command "]; PascalWriteInteger[file: @Output, item: O, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: "!"]};PascalWriteLn[file: @Output]; END --:51--; END--:50-- ENDLOOP ;EXITS Label9998 => NULL};{PascalWriteLongString[file: @Output, item: "!"]; PascalWriteLn[file: @Output]};Aok_FALSE;EXITS Label9999 => NULL};DoCharResult_Aok; END;--:49----61:-- ReadPostamble: PROCEDURE = BEGIN K:PascalInteger; P, Q, M, U, V, W, C:PascalInteger; --64: PostLoc_CurLoc-1; {PascalWriteLongString[file: @Output, item: "Postamble starts at byte "]; PascalWriteInteger[file: @Output, item: PostLoc, fieldMinLength: 1]}; IF PostLoc=GfPrevPtr THEN {PascalWriteLongString[file: @Output, item: "."]; PascalWriteLn[file: @Output]} ELSE { PascalWriteLongString[file: @Output, item: ", after special info at byte "]; PascalWriteInteger[file: @Output, item: GfPrevPtr, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: "."]; PascalWriteLn[file: @Output]};P_SignedQuad[]; IF P#GfPrevPtr THEN BEGIN {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "! "]; PascalWriteLongString[file: @Output, item: "backpointer in byte "] ; PascalWriteInteger[file: @Output, item: CurLoc-4, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " should be "]; PascalWriteInteger[file: @Output, item: GfPrevPtr, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " not "]; PascalWriteInteger[file: @Output, item: P, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: "!"]};PascalWriteLn[file: @Output]; END; DesignSize_SignedQuad[];CheckSum_SignedQuad[]; {PascalWriteLongString[file: @Output, item: "design size = "]; PascalWriteInteger[file: @Output, item: DesignSize, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " ("]}; PrintScaled[ PascalDIVPower2[DesignSize ,4]];{PascalWriteLongString[file: @Output, item: "pt)"]; PascalWriteLn[file: @Output]}; {PascalWriteLongString[file: @Output, item: "check sum = "]; PascalWriteInteger[file: @Output, item: CheckSum, fieldMinLength: 1]; PascalWriteLn[file: @Output]};Hppp_SignedQuad[];Vppp_SignedQuad[]; {PascalWriteLongString[file: @Output, item: "hppp = "]; PascalWriteInteger[file: @Output, item: Hppp, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " ("]};PrintScaled[Hppp];{PascalWriteLongString[file: @Output, item: ")"]; PascalWriteLn[file: @Output]}; {PascalWriteLongString[file: @Output, item: "vppp = "]; PascalWriteInteger[file: @Output, item: Vppp, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " ("]};PrintScaled[Vppp];{PascalWriteLongString[file: @Output, item: ")"]; PascalWriteLn[file: @Output]}; PixRatio_(PascalFLOAT[DesignSize]/PascalFLOAT[1048576])*(PascalFLOAT[Hppp]/PascalFLOAT[1048576]); MinMStated_SignedQuad[];MaxMStated_SignedQuad[]; MinNStated_SignedQuad[];MaxNStated_SignedQuad[]; {PascalWriteLongString[file: @Output, item: "min m = "]; PascalWriteInteger[file: @Output, item: MinMStated, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ", max m = "]; PascalWriteInteger[file: @Output, item: MaxMStated, fieldMinLength: 1]; PascalWriteLn[file: @Output]}; IF MinMStated>MinMOverall THEN BEGIN {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "! "] ; PascalWriteLongString[file: @Output, item: "min m should be <="]; PascalWriteInteger[file: @Output, item: MinMOverall, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: "!"]};PascalWriteLn[file: @Output]; END; IF MaxMStated="]; PascalWriteInteger[file: @Output, item: MaxMOverall, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: "!"]};PascalWriteLn[file: @Output]; END; {PascalWriteLongString[file: @Output, item: "min n = "]; PascalWriteInteger[file: @Output, item: MinNStated, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ", max n = "]; PascalWriteInteger[file: @Output, item: MaxNStated, fieldMinLength: 1]; PascalWriteLn[file: @Output]}; IF MinNStated>MinNOverall THEN BEGIN {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "! "] ; PascalWriteLongString[file: @Output, item: "min n should be <="]; PascalWriteInteger[file: @Output, item: MinNOverall, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: "!"]};PascalWriteLn[file: @Output]; END; IF MaxNStated="]; PascalWriteInteger[file: @Output, item: MaxNOverall, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: "!"]};PascalWriteLn[file: @Output]; END;--65: DO A_CurLoc;K_GetByte[]; IF(K=245)OR (K=246) THEN BEGIN C_FirstPar[K]; IF K=245 THEN BEGIN U_SignedQuad[];V_SignedQuad[]; END ELSE BEGIN U_GetByte[]*65536;V_0; END;W_SignedQuad[];P_SignedQuad[]; {PascalWriteLongString[file: @Output, item: "Character "]; PascalWriteInteger[file: @Output, item: C, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": dx "]; PascalWriteInteger[file: @Output, item: U, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " ("]};PrintScaled[U]; IF V#0 THEN BEGIN {PascalWriteLongString[file: @Output, item: "), dy "]; PascalWriteInteger[file: @Output, item: V, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " ("]};PrintScaled[V]; END; {PascalWriteLongString[file: @Output, item: "), width "]; PascalWriteInteger[file: @Output, item: W, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " ("]};W_PascalROUND[PascalFLOAT[W]*PixRatio];PrintScaled[W]; {PascalWriteLongString[file: @Output, item: "), loc "]; PascalWriteInteger[file: @Output, item: P, fieldMinLength: 1]; PascalWriteLn[file: @Output]};IF P#CharPtr^[C] THEN BEGIN {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "! "] ; PascalWriteLongString[file: @Output, item: "character location should be "]; PascalWriteInteger[file: @Output, item: CharPtr^[C], fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: "!"]};PascalWriteLn[file: @Output]; END;K_244; END; IF K#244 THEN EXIT; ENDLOOP;--:65--IF K#249 THEN BEGIN {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "! "]; PascalWriteLongString[file: @Output, item: "should be postpost!"]};PascalWriteLn[file: @Output]; END;Q_SignedQuad[];IF Q#PostLoc THEN BEGIN {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "! "] ; PascalWriteLongString[file: @Output, item: "postamble pointer should be "]; PascalWriteInteger[file: @Output, item: PostLoc, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " not "]; PascalWriteInteger[file: @Output, item: Q, fieldMinLength: 1]};PascalWriteLn[file: @Output]; END; M_GetByte[];IF M#131 THEN BEGIN {PascalWriteInteger[file: @Output, item: A, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ": "]; PascalWriteLongString[file: @Output, item: "! "] ; PascalWriteLongString[file: @Output, item: "identification byte should be "]; PascalWriteInteger[file: @Output, item: 131, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: ", not "]; PascalWriteInteger[file: @Output, item: M, fieldMinLength: 1]};PascalWriteLn[file: @Output]; END; K_CurLoc;M_223;WHILE (M=223)AND NOT PascalEOF[file: @GfFile.baseFile]DO M_GetByte[] ENDLOOP ; IF NOT PascalEOF[file: @GfFile.baseFile] THEN BEGIN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLongString[file: @Output, item: "Bad GF file: "] ; PascalWriteLongString[file: @Output, item: "signature in byte "]; PascalWriteInteger[file: @Output, item: CurLoc-1, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " should be 223"]; PascalWriteLongString[file: @Output, item: "!"]};JumpOut[]; END ELSE IF CurLoc