-- file: PLtoTF4Impl.mesa -- Pascal-to-Mesa translator output, translated at October 23, 1985 11:00:04 am PDT DIRECTORY PascalBasic, PascalWizardFiles, PLtoTFPrivate, PLtoTFExternals; PLtoTF4Impl: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, PLtoTFPrivate EXPORTS PLtoTFPrivate = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, PLtoTFPrivate, PLtoTFExternals; WriteByte: PROCEDURE[ F: LONG POINTER TO ByteFile,B: PascalInteger[0..255]] = BEGIN PascalWriteLong[file: @F^.baseFile, length: SIZE[PascalInteger[0..255], 2], element: @F^.element, item: @B]; END; --:86----87:-- ReadBcpl: PROCEDURE[L: HeaderIndex,N: Byte] = BEGIN K:HeaderIndex; K_L;WHILE CurChar=32 DO GetNext[] ENDLOOP ; WHILE(CurChar#40)AND (CurChar#41)DO BEGIN IF INT[K]0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]}; {PascalWriteLongString[file: @Output, item: "String is too long; its first "]; PascalWriteInteger[file: @Output, item: N-1, fieldMinLength: 1]; PascalWriteLongString[file: @Output, item: " characters will be kept"] };ShowErrorContext[]; END;K_K-1; END;HeaderBytes^[L]_K-L; WHILE INT[K] NULL; 1 =>BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]}; PascalWriteLongString[file: @Output, item: "This character already appeared in a LIGTABLE LABEL"]; ShowErrorContext[]; END;2 =>BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]}; PascalWriteLongString[file: @Output, item: "This character already has a NEXTLARGER spec"]; ShowErrorContext[]; END;3 =>BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]}; PascalWriteLongString[file: @Output, item: "This character already has a VARCHAR spec"];ShowErrorContext[]; END; ENDCASE; END;--:96----106:-- PrintOctal: PROCEDURE[C: Byte] = BEGIN {PascalWriteLongString[file: @Output, item: "'"]; PascalWriteInteger[file: @Output, item: ( PascalDIVPower2[C ,6]), fieldMinLength: 1]; PascalWriteInteger[file: @Output, item: ( PascalMODPower2Mask[( PascalDIVPower2[C ,3]),7]), fieldMinLength: 1]; PascalWriteInteger[file: @Output, item: ( PascalMODPower2Mask[C ,7]), fieldMinLength: 1]}; END;--:106 --128:-- OutScaled: PROCEDURE[X: FixWord] = BEGIN Z:PascalReal;N:Byte;M:PascalInteger[0..65535]; IF ABS[PascalFLOAT[X]/PascalFLOAT[DesignUnits]]>=16.0 THEN BEGIN { PascalWriteLongString[file: @Output, item: "The relative dimension"]; PascalWriteReal[file: @Output, item: PascalFLOAT[X]/PascalFLOAT[1048576], fieldMinLength: 1, fracLength: 3]; PascalWriteLongString[file: @Output, item: " is too large."]; PascalWriteLn[file: @Output]}; PascalWriteLongString[file: @Output, item: " (Must be less than 16*designsize"]; IF DesignUnits#1048576 THEN {PascalWriteLongString[file: @Output, item: " ="]; PascalWriteReal[file: @Output, item: PascalFLOAT[DesignUnits]/PascalFLOAT[65536], fieldMinLength: 1, fracLength: 3] ; PascalWriteLongString[file: @Output, item: " designunits"]};{PascalWriteLongString[file: @Output, item: ")"]; PascalWriteLn[file: @Output]};X_0; END; IF X<0 THEN WriteByte[@TfmFile,255] ELSE WriteByte[@TfmFile,0]; IF DesignUnits=1048576 THEN BEGIN IF X<0 THEN X_X+16777216; N_ PascalDIVPower2[X ,16];M_ PascalMODPower2Mask[X ,65535]; END ELSE BEGIN Z_(PascalFLOAT[X]/PascalFLOAT[DesignUnits])*16.0; IF Z