-- file: PLtoTFMain.mesa
-- Pascal-to-Mesa translator output, translated at September 23, 1986 1:41:45 pm PDT
DIRECTORY
PascalBasic,
PascalWizardFiles,
PLtoTFPrivate,
PLtoTFExternals;
PLtoTFMain: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, PLtoTFPrivate, PLtoTFExternals EXPORTS = PUBLIC
BEGIN OPEN PascalBasic, PascalWizardFiles, PLtoTFPrivate, PLtoTFExternals;
--2:-- --135:-- PLtoTFRun: UnsafeCommandProc = BEGIN
--123:-- --125:--
--127:--
--130:-- --132:
TtyRewrite[@Output];Initialize[];NameEnter[];ReadInput[];
{PascalWriteLongString[file: @Output, item: "."]; PascalWriteLn[file: @Output]};CorrAndCheck[];--120:----122:--Lh← PascalDIVPower2[HeaderPtr ,2];
NotFound←TRUE;Bc←0;
WHILE NotFound DO IF( INT[CharWd↑[Bc]]>0)OR (Bc=255) THEN NotFound←FALSE ELSE
Bc←Bc+1 ENDLOOP ;NotFound←TRUE;Ec←255;
WHILE NotFound DO IF( INT[CharWd↑[Ec]]>0)OR (Ec=0) THEN NotFound←FALSE ELSE
Ec←Ec-1 ENDLOOP ;IF INT[Bc]>Ec THEN Bc←1;Memory↑[1]←Memory↑[1]+1;
Memory↑[2]←Memory↑[2]+1;Memory↑[3]←Memory↑[3]+1;Memory↑[4]←Memory↑[4]+1;
Lf←6+Lh+(Ec-Bc+1)+Memory↑[1]+Memory↑[2]+Memory↑[3]+Memory↑[4]+Nl+Nk+Ne+Np;
--:122--WriteByte[@TfmFile, PascalDIVPower2[(Lf),8]];
WriteByte[@TfmFile, PascalMODPower2Mask[(Lf),255]];WriteByte[@TfmFile, PascalDIVPower2[(Lh),8]];
WriteByte[@TfmFile, PascalMODPower2Mask[(Lh),255]];WriteByte[@TfmFile, PascalDIVPower2[(Bc),8]];
WriteByte[@TfmFile, PascalMODPower2Mask[(Bc),255]];WriteByte[@TfmFile, PascalDIVPower2[(Ec),8]];
WriteByte[@TfmFile, PascalMODPower2Mask[(Ec),255]];
WriteByte[@TfmFile, PascalDIVPower2[(Memory↑[1]),8]];
WriteByte[@TfmFile, PascalMODPower2Mask[(Memory↑[1]),255]];
WriteByte[@TfmFile, PascalDIVPower2[(Memory↑[2]),8]];
WriteByte[@TfmFile, PascalMODPower2Mask[(Memory↑[2]),255]];
WriteByte[@TfmFile, PascalDIVPower2[(Memory↑[3]),8]];
WriteByte[@TfmFile, PascalMODPower2Mask[(Memory↑[3]),255]];
WriteByte[@TfmFile, PascalDIVPower2[(Memory↑[4]),8]];
WriteByte[@TfmFile, PascalMODPower2Mask[(Memory↑[4]),255]];
WriteByte[@TfmFile, PascalDIVPower2[(Nl),8]];WriteByte[@TfmFile, PascalMODPower2Mask[(Nl),255]];
WriteByte[@TfmFile, PascalDIVPower2[(Nk),8]];WriteByte[@TfmFile, PascalMODPower2Mask[(Nk),255]];
WriteByte[@TfmFile, PascalDIVPower2[(Ne),8]];WriteByte[@TfmFile, PascalMODPower2Mask[(Ne),255]];
WriteByte[@TfmFile, PascalDIVPower2[(Np),8]];WriteByte[@TfmFile, PascalMODPower2Mask[(Np),255]];--:123
IF NOT CheckSumSpecified THEN--126:--BEGIN CurBytes.B0←Bc;
CurBytes.B1←Ec;CurBytes.B2←Bc;CurBytes.B3←Ec;
FOR i:INT IN [ INT[Bc ].. INT[Ec ]] DO C ← i; IF INT[CharWd↑[C]]>0 THEN BEGIN TempWidth←Memory↑[CharWd
↑[C]];
IF DesignUnits#1048576 THEN TempWidth←PascalTRUNC[(PascalFLOAT[TempWidth]/PascalFLOAT[DesignUnits
])*1048576.0];TempWidth←TempWidth+(C+4)*4194304;
CurBytes.B0← (CurBytes.B0+CurBytes.B0+TempWidth)MOD 255;
CurBytes.B1← (CurBytes.B1+CurBytes.B1+TempWidth)MOD 253;
CurBytes.B2← (CurBytes.B2+CurBytes.B2+TempWidth)MOD 251;
CurBytes.B3← (CurBytes.B3+CurBytes.B3+TempWidth)MOD 247; END ENDLOOP;
HeaderBytes↑[0]←CurBytes.B0;HeaderBytes↑[1]←CurBytes.B1;
HeaderBytes↑[2]←CurBytes.B2;HeaderBytes↑[3]←CurBytes.B3; END--:126--;
HeaderBytes↑[4]← PascalDIVPower2[DesignSize ,24];
HeaderBytes↑[5]← PascalMODPower2Mask[( PascalDIVPower2[DesignSize ,16]),255];
HeaderBytes↑[6]← PascalMODPower2Mask[( PascalDIVPower2[DesignSize ,8]),255];
HeaderBytes↑[7]← PascalMODPower2Mask[DesignSize ,255];
IF NOT SevenUnsafe THEN HeaderBytes↑[68]←128;
FOR i:INT IN [ INT[0 ].. INT[HeaderPtr-1 ]] DO J ← i; WriteByte[@TfmFile,HeaderBytes↑[J]] ENDLOOP;--:125--Index↑[0]←0;
FOR i:INT IN [ INT[Bc ].. INT[Ec ]] DO C ← i; WriteByte[@TfmFile,Index↑[CharWd↑[C]]];
WriteByte[@TfmFile,Index↑[CharHt↑[C]]*16+Index↑[CharDp↑[C]]];
WriteByte[@TfmFile,Index↑[CharIc↑[C]]*4+CharTag↑[C]];
WriteByte[@TfmFile,CharRemainder↑[C]];--:127-- ENDLOOP;--129:
FOR i:INT IN [ INT[1 ].. INT[4 ]] DO Q ← i; WriteByte[@TfmFile,0];WriteByte[@TfmFile,0];
WriteByte[@TfmFile,0];WriteByte[@TfmFile,0];P←Link↑[Q];
WHILE INT[P]>0 DO BEGIN OutScaled[Memory↑[P]];P←Link↑[P]; END ENDLOOP ; ENDLOOP;--:129--IF INT[Nl]>0 THEN FOR i:INT IN [ INT[0 ].. INT[Nl-1 ]] DO LigPtr ← i; WriteByte[@TfmFile,
LigKern↑[LigPtr].B0];WriteByte[@TfmFile,LigKern↑[LigPtr].B1];
WriteByte[@TfmFile,LigKern↑[LigPtr].B2];
WriteByte[@TfmFile,LigKern↑[LigPtr].B3]; ENDLOOP;
IF INT[Nk]>0 THEN FOR i:INT IN [ INT[0 ].. INT[Nk-1 ]] DO KrnPtr ← i; OutScaled[Kern↑[KrnPtr]]--:130-- ENDLOOP;
--131:
IF INT[Ne]>0 THEN FOR i:INT IN [ INT[0 ].. INT[Ne-1 ]] DO C ← i; WriteByte[@TfmFile,Exten↑[C].B0];
WriteByte[@TfmFile,Exten↑[C].B1];WriteByte[@TfmFile,Exten↑[C].B2];
WriteByte[@TfmFile,Exten↑[C].B3]; ENDLOOP;--:131--FOR i:INT IN [ INT[1 ].. INT[Np ]] DO ParPtr ← i; IF ParPtr=1 THEN--133:
BEGIN IF Param↑[1]<0 THEN BEGIN Param↑[1]←Param↑[1]+1073741824;
WriteByte[@TfmFile,( PascalDIVPower2[Param↑[1],24])+192];
END ELSE WriteByte[@TfmFile, PascalDIVPower2[Param↑[1],24]];
WriteByte[@TfmFile, PascalMODPower2Mask[( PascalDIVPower2[Param↑[1],16]),255]];
WriteByte[@TfmFile, PascalMODPower2Mask[( PascalDIVPower2[Param↑[1],8]),255]];
WriteByte[@TfmFile, PascalMODPower2Mask[Param↑[1],255]]; END--:133
ELSE OutScaled[Param↑[ParPtr]];--:132----:120-- ENDLOOP;FileClose[@PlFile];
ByteFileClose[@TfmFile];--:135
END;
PascalRegister["PLtoTF", PLtoTFRun];
END.