-- file: PLtoTF5Impl.mesa
-- Pascal-to-Mesa translator output, translated at September 23, 1986 1:41:45 pm PDT
DIRECTORY
PascalBasic,
PascalWizardFiles,
PLtoTFPrivate,
PLtoTFExternals;
PLtoTF5Impl: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, PLtoTFPrivate EXPORTS PLtoTFPrivate = PUBLIC
BEGIN OPEN PascalBasic, PascalWizardFiles, PLtoTFPrivate, PLtoTFExternals;
NameEnter: PROCEDURE
=
BEGIN--47:-- Equiv↑[0]←0;NameLength←8;CurName↑[13]←67;CurName↑[14]←72;
CurName↑[15]←69;CurName↑[16]←67;CurName↑[17]←75;CurName↑[18]←83;
CurName↑[19]←85;CurName↑[20]←77;EnterName[1];NameLength←10;
CurName↑[11]←68;CurName↑[12]←69;CurName↑[13]←83;CurName↑[14]←73;
CurName↑[15]←71;CurName↑[16]←78;CurName↑[17]←83;CurName↑[18]←73;
CurName↑[19]←90;CurName↑[20]←69;EnterName[2];NameLength←11;
CurName↑[10]←68;CurName↑[11]←69;CurName↑[12]←83;CurName↑[13]←73;
CurName↑[14]←71;CurName↑[15]←78;CurName↑[16]←85;CurName↑[17]←78;
CurName↑[18]←73;CurName↑[19]←84;CurName↑[20]←83;EnterName[3];
NameLength←12;CurName↑[9]←67;CurName↑[10]←79;CurName↑[11]←68;
CurName↑[12]←73;CurName↑[13]←78;CurName↑[14]←71;CurName↑[15]←83;
CurName↑[16]←67;CurName↑[17]←72;CurName↑[18]←69;CurName↑[19]←77;
CurName↑[20]←69;EnterName[4];NameLength←6;CurName↑[15]←70;
CurName↑[16]←65;CurName↑[17]←77;CurName↑[18]←73;CurName↑[19]←76;
CurName↑[20]←89;EnterName[5];NameLength←4;CurName↑[17]←70;
CurName↑[18]←65;CurName↑[19]←67;CurName↑[20]←69;EnterName[6];
NameLength←16;CurName↑[5]←83;CurName↑[6]←69;CurName↑[7]←86;
CurName↑[8]←69;CurName↑[9]←78;CurName↑[10]←66;CurName↑[11]←73;
CurName↑[12]←84;CurName↑[13]←83;CurName↑[14]←65;CurName↑[15]←70;
CurName↑[16]←69;CurName↑[17]←70;CurName↑[18]←76;CurName↑[19]←65;
CurName↑[20]←71;EnterName[7];NameLength←6;CurName↑[15]←72;
CurName↑[16]←69;CurName↑[17]←65;CurName↑[18]←68;CurName↑[19]←69;
CurName↑[20]←82;EnterName[8];NameLength←9;CurName↑[12]←70;
CurName↑[13]←79;CurName↑[14]←78;CurName↑[15]←84;CurName↑[16]←68;
CurName↑[17]←73;CurName↑[18]←77;CurName↑[19]←69;CurName↑[20]←78;
EnterName[9];NameLength←8;CurName↑[13]←76;CurName↑[14]←73;
CurName↑[15]←71;CurName↑[16]←84;CurName↑[17]←65;CurName↑[18]←66;
CurName↑[19]←76;CurName↑[20]←69;EnterName[10];NameLength←9;
CurName↑[12]←67;CurName↑[13]←72;CurName↑[14]←65;CurName↑[15]←82;
CurName↑[16]←65;CurName↑[17]←67;CurName↑[18]←84;CurName↑[19]←69;
CurName↑[20]←82;EnterName[11];NameLength←9;CurName↑[12]←80;
CurName↑[13]←65;CurName↑[14]←82;CurName↑[15]←65;CurName↑[16]←77;
CurName↑[17]←69;CurName↑[18]←84;CurName↑[19]←69;CurName↑[20]←82;
EnterName[20];NameLength←6;CurName↑[15]←67;CurName↑[16]←72;
CurName↑[17]←65;CurName↑[18]←82;CurName↑[19]←87;CurName↑[20]←68;
EnterName[51];NameLength←6;CurName↑[15]←67;CurName↑[16]←72;
CurName↑[17]←65;CurName↑[18]←82;CurName↑[19]←72;CurName↑[20]←84;
EnterName[52];NameLength←6;CurName↑[15]←67;CurName↑[16]←72;
CurName↑[17]←65;CurName↑[18]←82;CurName↑[19]←68;CurName↑[20]←80;
EnterName[53];NameLength←6;CurName↑[15]←67;CurName↑[16]←72;
CurName↑[17]←65;CurName↑[18]←82;CurName↑[19]←73;CurName↑[20]←67;
EnterName[54];NameLength←10;CurName↑[11]←78;CurName↑[12]←69;
CurName↑[13]←88;CurName↑[14]←84;CurName↑[15]←76;CurName↑[16]←65;
CurName↑[17]←82;CurName↑[18]←71;CurName↑[19]←69;CurName↑[20]←82;
EnterName[55];NameLength←7;CurName↑[14]←86;CurName↑[15]←65;
CurName↑[16]←82;CurName↑[17]←67;CurName↑[18]←72;CurName↑[19]←65;
CurName↑[20]←82;EnterName[56];NameLength←3;CurName↑[18]←84;
CurName↑[19]←79;CurName↑[20]←80;EnterName[57];NameLength←3;
CurName↑[18]←77;CurName↑[19]←73;CurName↑[20]←68;EnterName[58];
NameLength←3;CurName↑[18]←66;CurName↑[19]←79;CurName↑[20]←84;
EnterName[59];NameLength←3;CurName↑[18]←82;CurName↑[19]←69;
CurName↑[20]←80;EnterName[60];NameLength←3;CurName↑[18]←69;
CurName↑[19]←88;CurName↑[20]←84;EnterName[60];NameLength←7;
CurName↑[14]←67;CurName↑[15]←79;CurName↑[16]←77;CurName↑[17]←77;
CurName↑[18]←69;CurName↑[19]←78;CurName↑[20]←84;EnterName[0];
NameLength←5;CurName↑[16]←76;CurName↑[17]←65;CurName↑[18]←66;
CurName↑[19]←69;CurName↑[20]←76;EnterName[70];NameLength←3;
CurName↑[18]←76;CurName↑[19]←73;CurName↑[20]←71;EnterName[71];
NameLength←3;CurName↑[18]←75;CurName↑[19]←82;CurName↑[20]←78;
EnterName[72];NameLength←4;CurName↑[17]←83;CurName↑[18]←84;
CurName↑[19]←79;CurName↑[20]←80;EnterName[73];--:47--ParamEnter[]; END;
ReadLigKern: PROCEDURE =
BEGIN KrnPtr:PascalInteger[0..256];C:Byte;--94:
BEGIN WHILE Level=1 DO BEGIN WHILE CurChar=32 DO GetNext[] ENDLOOP ;
IF CurChar=40 THEN--95:--BEGIN GetName[];
IF CurCode=0 THEN SkipToEndOfItem [] ELSE IF( INT[CurCode]<70)OR (
INT[CurCode]>73) THEN BEGIN BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "This property name doesn't belong in a LIGTABLE list"];
ShowErrorContext[]; END;SkipToEndOfItem[];
END ELSE BEGIN SELECT CurCode FROM 70 =>--97:--BEGIN C←GetByte[];CheckTag[C];
IF INT[Nl]>255 THEN BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "LIGTABLE with more than 255 commands cannot have further labels"]
;ShowErrorContext[]; END ELSE BEGIN CharTag↑[C]←1;CharRemainder↑[C]←Nl;
UnusedLabel←TRUE; END; END--:97--;71 =>--98:--BEGIN LigKern↑[Nl].B0←0;
LigKern↑[Nl].B1←GetByte[];LigKern↑[Nl].B2←0;LigKern↑[Nl].B3←GetByte[];
IF Nl=511 THEN BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "LIGTABLE should never exceed 511 LIG/KRN commands"];
ShowErrorContext[]; END ELSE Nl←Nl+1;UnusedLabel←FALSE; END--:98--;
72 =>--100:--BEGIN LigKern↑[Nl].B0←0;LigKern↑[Nl].B1←GetByte[];
LigKern↑[Nl].B2←128;Kern↑[Nk]←GetFix[];KrnPtr←0;
WHILE Kern↑[KrnPtr]#Kern↑[Nk]DO KrnPtr←KrnPtr+1 ENDLOOP ;
IF KrnPtr=Nk THEN BEGIN IF INT[Nk]<256 THEN Nk←Nk+1 ELSE BEGIN BEGIN IF
INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "At most 256 different kerns are allowed"];ShowErrorContext[]; END;
KrnPtr←255; END; END;LigKern↑[Nl].B3←KrnPtr;
IF Nl=511 THEN BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "LIGTABLE should never exceed 511 LIG/KRN commands"];
ShowErrorContext[]; END ELSE Nl←Nl+1;UnusedLabel←FALSE; END--:100--;
73 =>--101:--BEGIN IF Nl=0 THEN BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "Why STOP? You haven't started"];ShowErrorContext[];
END ELSE BEGIN IF UnusedLabel THEN BEGIN BEGIN IF INT[CharsOnLine]>0 THEN
{PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};PascalWriteLongString[file: @Output, item: "STOP after LABEL invalidates the label"];
ShowErrorContext[]; END;
FOR i:INT IN [ INT[0 ].. INT[255 ]] DO C ← i; IF(CharTag↑[C]=1)AND (CharRemainder↑[C]=Nl) THEN
CharTag↑[C]←0 ENDLOOP;UnusedLabel←FALSE; END;LigKern↑[Nl-1].B0←128; END;
END--:101--; ENDCASE;FinishTheProperty[]; END; END--:95
ELSE IF CurChar=41 THEN SkipToEndOfItem [] ELSE JunkError[]; END ENDLOOP ;
BEGIN Loc←Loc-1;Level←Level+1;CurChar←41; END; END--:94--; END;
ReadCharInfo: PROCEDURE =
BEGIN--102:--BEGIN C←GetByte[];--107:
BEGIN IF CharsOnLine=8 THEN BEGIN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};CharsOnLine←1;
END ELSE BEGIN IF INT[CharsOnLine]>0 THEN PascalWriteLongString[file: @Output, item: " "];
CharsOnLine←CharsOnLine+1; END;PrintOctal[C]; END--:107--;
WHILE Level=1 DO BEGIN WHILE CurChar=32 DO GetNext[] ENDLOOP ;
IF CurChar=40 THEN--103:--BEGIN GetName[];
IF CurCode=0 THEN SkipToEndOfItem [] ELSE IF( INT[CurCode]<51)OR (
INT[CurCode]>56) THEN BEGIN BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "This property name doesn't belong in a CHARACTER list"];
ShowErrorContext[]; END;SkipToEndOfItem[];
END ELSE BEGIN SELECT CurCode FROM 51 =>CharWd↑[C]←SortIn[1,GetFix[]];
52 =>CharHt↑[C]←SortIn[2,GetFix[]];53 =>CharDp↑[C]←SortIn[3,GetFix[]];
54 =>CharIc↑[C]←SortIn[4,GetFix[]];55 =>BEGIN CheckTag[C];CharTag↑[C]←2;
CharRemainder↑[C]←GetByte[]; END;56 =>--104:
BEGIN IF Ne=256 THEN BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "At most 256 VARCHAR specs are allowed"];ShowErrorContext[];
END ELSE BEGIN CheckTag[C];CharTag↑[C]←3;CharRemainder↑[C]←Ne;
Exten↑[Ne].B0←0;Exten↑[Ne].B1←0;Exten↑[Ne].B2←0;Exten↑[Ne].B3←0;
WHILE Level=2 DO BEGIN WHILE CurChar=32 DO GetNext[] ENDLOOP ;
IF CurChar=40 THEN--105:--BEGIN GetName[];
IF CurCode=0 THEN SkipToEndOfItem [] ELSE IF( INT[CurCode]<57)OR (
INT[CurCode]>60) THEN BEGIN BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "This property name doesn't belong in a VARCHAR list"];
ShowErrorContext[]; END;SkipToEndOfItem[];
END ELSE BEGIN SELECT CurCode-(57)FROM 0 =>Exten↑[Ne].B0←GetByte[];
1 =>Exten↑[Ne].B1←GetByte[];2 =>Exten↑[Ne].B2←GetByte[];
3 =>Exten↑[Ne].B3←GetByte[]; ENDCASE;FinishTheProperty[]; END; END--:105
ELSE IF CurChar=41 THEN SkipToEndOfItem [] ELSE JunkError[]; END ENDLOOP ;
Ne←Ne+1;BEGIN Loc←Loc-1;Level←Level+1;CurChar←41; END; END; END--:104--;
ENDCASE;FinishTheProperty[]; END; END--:103
ELSE IF CurChar=41 THEN SkipToEndOfItem [] ELSE JunkError[]; END ENDLOOP ;
IF CharWd↑[C]=0 THEN CharWd↑[C]←SortIn[1,0];BEGIN Loc←Loc-1;
Level←Level+1;CurChar←41; END; END--:102--; END; ReadInput: PROCEDURE
=
BEGIN--82:--CurChar←32;DO WHILE CurChar=32 DO GetNext[] ENDLOOP ;
IF CurChar=40 THEN--84:--BEGIN GetName[];
IF CurCode=0 THEN SkipToEndOfItem [] ELSE IF INT[CurCode]>11 THEN BEGIN
BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "This property name doesn't belong on the outer level"];
ShowErrorContext[]; END;SkipToEndOfItem[]; END ELSE BEGIN--85:
SELECT CurCode FROM 1 =>BEGIN CheckSumSpecified←TRUE;ReadFourBytes[0];
END;2 =>--88:--BEGIN NextD←GetFix[];
IF(NextD<1048576)OR (NextD>=1073741824) THEN BEGIN IF INT[CharsOnLine]>0
THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};PascalWriteLongString[file: @Output, item: "The design size must be between 1 and 1024"];
ShowErrorContext[]; END ELSE DesignSize←NextD; END--:88--;3 =>--89:
BEGIN NextD←GetFix[];
IF NextD<=0 THEN BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "The number of units per design size must be positive"];
ShowErrorContext[]; END ELSE DesignUnits←NextD; END--:89--;
4 =>ReadBcpl[8,40];5 =>ReadBcpl[48,20];6 =>HeaderBytes↑[71]←GetByte[];
7 =>--90:--BEGIN WHILE CurChar=32 DO GetNext[] ENDLOOP ;
IF CurChar=84 THEN SevenBitSafeFlag←TRUE ELSE IF CurChar=70 THEN
SevenBitSafeFlag←FALSE ELSE BEGIN IF INT[CharsOnLine]>0 THEN {
PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};PascalWriteLongString[file: @Output, item: "The flag value should be \"TRUE\" or \"FALSE\""];
ShowErrorContext[]; END;
DO GetNext []; IF(CurChar=40)OR (CurChar=41) THEN EXIT; ENDLOOP; END--:90--;8 =>--91:
BEGIN C←GetByte[];
IF INT[C]<18 THEN BEGIN BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "HEADER indices should be 18 or more"];ShowErrorContext[]; END;
DO GetNext []; IF(CurChar=40)OR (CurChar=41) THEN EXIT; ENDLOOP;
END ELSE IF INT[4*C+4]>MaxHeaderBytes THEN BEGIN BEGIN IF INT[CharsOnLine]>0
THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "This HEADER index is too big for my present table size"];
ShowErrorContext[]; END;
DO GetNext []; IF(CurChar=40)OR (CurChar=41) THEN EXIT; ENDLOOP;
END ELSE BEGIN WHILE INT[HeaderPtr]<4*C DO BEGIN HeaderBytes↑[HeaderPtr]←0
;HeaderPtr←HeaderPtr+1; END ENDLOOP ;ReadFourBytes[4*C];HeaderPtr←4*C+4;
END; END--:91--;9 =>--92:
BEGIN WHILE Level=1 DO BEGIN WHILE CurChar=32 DO GetNext[] ENDLOOP ;
IF CurChar=40 THEN--93:--BEGIN GetName[];
IF CurCode=0 THEN SkipToEndOfItem [] ELSE IF( INT[CurCode]<20)OR (
INT[CurCode]>=51) THEN BEGIN BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "This property name doesn't belong in a FONTDIMEN list"];
ShowErrorContext[]; END;SkipToEndOfItem[];
END ELSE BEGIN IF CurCode=20 THEN C←GetByte [] ELSE C←CurCode-20;
IF C=0 THEN BEGIN BEGIN IF INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "PARAMETER index must not be zero"];ShowErrorContext[]; END;
SkipToEndOfItem[];
END ELSE IF INT[C]>MaxParamWords THEN BEGIN BEGIN IF INT[CharsOnLine]>0 THEN
{PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};
PascalWriteLongString[file: @Output, item: "This PARAMETER index is too big for my present table size"];
ShowErrorContext[]; END;SkipToEndOfItem[];
END ELSE BEGIN WHILE INT[Np]<C DO BEGIN Np←Np+1;Param↑[Np]←0; END ENDLOOP ;
Param↑[C]←GetFix[];FinishTheProperty[]; END; END; END--:93
ELSE IF CurChar=41 THEN SkipToEndOfItem [] ELSE JunkError[]; END ENDLOOP ;
BEGIN Loc←Loc-1;Level←Level+1;CurChar←41; END; END--:92--;
10 =>ReadLigKern[];11 =>ReadCharInfo[]; ENDCASE--:85--;FinishTheProperty[]; END;
END--:84-- ELSE IF (CurChar=41)AND NOT InputHasEnded THEN BEGIN BEGIN IF
INT[CharsOnLine]>0 THEN {PascalWriteLongString[file: @Output, item: " "]; PascalWriteLn[file: @Output]};PascalWriteLongString[file: @Output, item: "Extra right parenthesis"];
ShowErrorContext[]; END;Loc←Loc+1;CurChar←32;
END ELSE IF NOT InputHasEnded THEN JunkError[];
IF InputHasEnded--:82-- THEN EXIT; ENDLOOP; END; CorrAndCheck: PROCEDURE =
BEGIN C:Byte;
LigPtr:PascalInteger[0..511];G:Byte;--109:----110:
IF UnusedLabel THEN BEGIN FOR i:INT IN [ INT[0 ].. INT[255 ]] DO C ← i; IF(CharTag↑[C]=1)AND (
CharRemainder↑[C]=Nl) THEN CharTag↑[C]←0 ENDLOOP;
{PascalWriteLongString[file: @Output, item: "Last LIGTABLE LABEL was not used."]; PascalWriteLn[file: @Output]}; END;
IF INT[Nl]>0 THEN LigKern↑[Nl-1].B0←128--:110--;SevenUnsafe←FALSE;
FOR i:INT IN [ INT[0 ].. INT[255 ]] DO C ← i; IF CharWd↑[C]#0 THEN--111:--SELECT CharTag↑[C]FROM 0 => NULL;
1 =>--113:--BEGIN IF CharWd↑[C]=0 THEN BEGIN
PascalWriteLongString[file: @Output, item: "There's a LABEL but no CHARACTER spec for "];PrintOctal[C];
{PascalWriteLongString[file: @Output, item: "."]; PascalWriteLn[file: @Output]};CharWd↑[C]←SortIn[1,0]; END;LigPtr←CharRemainder↑[C];
DO IF INT[LigKern↑[LigPtr].B2]<128 THEN BEGIN BEGIN G←LigKern↑[LigPtr]
.B1;IF( INT[G]>=128)AND ( INT[C]<128) THEN SevenUnsafe←TRUE;
IF CharWd↑[G]=0 THEN BEGIN CharWd↑[G]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "LIG character generated by"]; PascalWriteLongString[file: @Output, item: " "]};PrintOctal[C];
{PascalWriteLongString[file: @Output, item: " had no CHARACTER spec."]; PascalWriteLn[file: @Output]}; END; END;
BEGIN G←LigKern↑[LigPtr].B3;
IF( INT[G]>=128)AND ( INT[C]<128) THEN SevenUnsafe←TRUE;
IF CharWd↑[G]=0 THEN BEGIN CharWd↑[G]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "LIG character generated by"]; PascalWriteLongString[file: @Output, item: " "]};PrintOctal[C];
{PascalWriteLongString[file: @Output, item: " had no CHARACTER spec."]; PascalWriteLn[file: @Output]}; END; END;
END ELSE BEGIN G←LigKern↑[LigPtr].B1;
IF( INT[G]>=128)AND ( INT[C]<128) THEN SevenUnsafe←TRUE;
IF CharWd↑[G]=0 THEN BEGIN CharWd↑[G]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "KRN character generated by"]; PascalWriteLongString[file: @Output, item: " "]};PrintOctal[C];
{PascalWriteLongString[file: @Output, item: " had no CHARACTER spec."]; PascalWriteLn[file: @Output]}; END; END;LigPtr←LigPtr+1;
IF LigKern↑[LigPtr-1].B0=128 THEN EXIT; ENDLOOP; END--:113--;2 =>BEGIN G←CharRemainder↑[C];
IF( INT[G]>=128)AND ( INT[C]<128) THEN SevenUnsafe←TRUE;
IF CharWd↑[G]=0 THEN BEGIN CharWd↑[G]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "The character NEXTLARGER than"]; PascalWriteLongString[file: @Output, item: " "]};PrintOctal[C];
{PascalWriteLongString[file: @Output, item: " had no CHARACTER spec."]; PascalWriteLn[file: @Output]}; END; END;3 =>--114:
BEGIN IF INT[Exten↑[CharRemainder↑[C]].B0]>0 THEN BEGIN G←Exten↑
[CharRemainder↑[C]].B0;IF( INT[G]>=128)AND ( INT[C]<128) THEN SevenUnsafe←TRUE;
IF CharWd↑[G]=0 THEN BEGIN CharWd↑[G]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "TOP piece of character"]; PascalWriteLongString[file: @Output, item: " "]};PrintOctal[C];
{PascalWriteLongString[file: @Output, item: " had no CHARACTER spec."]; PascalWriteLn[file: @Output]}; END; END;
IF INT[Exten↑[CharRemainder↑[C]].B1]>0 THEN BEGIN G←Exten↑[CharRemainder↑[C]].
B1;IF( INT[G]>=128)AND ( INT[C]<128) THEN SevenUnsafe←TRUE;
IF CharWd↑[G]=0 THEN BEGIN CharWd↑[G]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "MID piece of character"]; PascalWriteLongString[file: @Output, item: " "]};PrintOctal[C];
{PascalWriteLongString[file: @Output, item: " had no CHARACTER spec."]; PascalWriteLn[file: @Output]}; END; END;
IF INT[Exten↑[CharRemainder↑[C]].B2]>0 THEN BEGIN G←Exten↑[CharRemainder↑[C]].
B2;IF( INT[G]>=128)AND ( INT[C]<128) THEN SevenUnsafe←TRUE;
IF CharWd↑[G]=0 THEN BEGIN CharWd↑[G]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "BOT piece of character"]; PascalWriteLongString[file: @Output, item: " "]};PrintOctal[C];
{PascalWriteLongString[file: @Output, item: " had no CHARACTER spec."]; PascalWriteLn[file: @Output]}; END; END;
BEGIN G←Exten↑[CharRemainder↑[C]].B3;
IF( INT[G]>=128)AND ( INT[C]<128) THEN SevenUnsafe←TRUE;
IF CharWd↑[G]=0 THEN BEGIN CharWd↑[G]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "REP piece of character"]; PascalWriteLongString[file: @Output, item: " "]};PrintOctal[C];
{PascalWriteLongString[file: @Output, item: " had no CHARACTER spec."]; PascalWriteLn[file: @Output]}; END; END; END--:114--; ENDCASE--:111-- ENDLOOP;
IF SevenBitSafeFlag AND SevenUnsafe THEN {
PascalWriteLongString[file: @Output, item: "The font is not really seven-bit-safe!"]; PascalWriteLn[file: @Output]};--115:
IF INT[Nl]>0 THEN FOR i:INT IN [ INT[0 ].. INT[Nl-1 ]] DO LigPtr ← i; IF INT[LigKern↑[LigPtr].B2]<128 THEN
BEGIN C←LigKern↑[LigPtr].B3;
IF CharWd↑[C]=0 THEN BEGIN LigKern↑[LigPtr].B3←0;
IF CharWd↑[0]=0 THEN CharWd↑[0]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "Unused "]; PascalWriteLongString[file: @Output, item: "LIG step"]; PascalWriteLongString[file: @Output, item: " refers to nonexistent character "]};
PrintOctal[C];{PascalWriteLongString[file: @Output, item: "!"]; PascalWriteLn[file: @Output]}; END; END ELSE BEGIN C←LigKern↑[LigPtr].B1;
IF CharWd↑[C]=0 THEN BEGIN LigKern↑[LigPtr].B1←0;
IF CharWd↑[0]=0 THEN CharWd↑[0]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "Unused "]; PascalWriteLongString[file: @Output, item: "KRN step"]; PascalWriteLongString[file: @Output, item: " refers to nonexistent character "]};
PrintOctal[C];{PascalWriteLongString[file: @Output, item: "!"]; PascalWriteLn[file: @Output]}; END; END ENDLOOP;
IF INT[Ne]>0 THEN FOR i:INT IN [ INT[0 ].. INT[Ne-1 ]] DO G ← i; BEGIN C←Exten↑[G].B0;
IF INT[C]>0 THEN IF CharWd↑[C]=0 THEN BEGIN Exten↑[G].B0←0;
IF CharWd↑[0]=0 THEN CharWd↑[0]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "Unused "]; PascalWriteLongString[file: @Output, item: "VARCHAR TOP"]; PascalWriteLongString[file: @Output, item: " refers to nonexistent character "]};
PrintOctal[C];{PascalWriteLongString[file: @Output, item: "!"]; PascalWriteLn[file: @Output]}; END; END;BEGIN C←Exten↑[G].B1;
IF INT[C]>0 THEN IF CharWd↑[C]=0 THEN BEGIN Exten↑[G].B1←0;
IF CharWd↑[0]=0 THEN CharWd↑[0]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "Unused "]; PascalWriteLongString[file: @Output, item: "VARCHAR MID"]; PascalWriteLongString[file: @Output, item: " refers to nonexistent character "]};
PrintOctal[C];{PascalWriteLongString[file: @Output, item: "!"]; PascalWriteLn[file: @Output]}; END; END;BEGIN C←Exten↑[G].B2;
IF INT[C]>0 THEN IF CharWd↑[C]=0 THEN BEGIN Exten↑[G].B2←0;
IF CharWd↑[0]=0 THEN CharWd↑[0]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "Unused "]; PascalWriteLongString[file: @Output, item: "VARCHAR BOT"]; PascalWriteLongString[file: @Output, item: " refers to nonexistent character "]};
PrintOctal[C];{PascalWriteLongString[file: @Output, item: "!"]; PascalWriteLn[file: @Output]}; END; END;BEGIN C←Exten↑[G].B3;
IF CharWd↑[C]=0 THEN BEGIN Exten↑[G].B3←0;
IF CharWd↑[0]=0 THEN CharWd↑[0]←SortIn[1,0];
{PascalWriteLongString[file: @Output, item: "Unused "]; PascalWriteLongString[file: @Output, item: "VARCHAR REP"]; PascalWriteLongString[file: @Output, item: " refers to nonexistent character "]};
PrintOctal[C];{PascalWriteLongString[file: @Output, item: "!"]; PascalWriteLn[file: @Output]}; END; END;--:115-- ENDLOOP;FOR i:INT IN [ INT[0 ].. INT[255 ]] DO --116:
C ← i; IF CharTag↑[C]=2 THEN BEGIN G←CharRemainder↑[C];
WHILE( INT[G]<C)AND (CharTag↑[G]=2)DO G←CharRemainder↑[G] ENDLOOP ;
IF G=C THEN BEGIN CharTag↑[C]←0;
PascalWriteLongString[file: @Output, item: "A cycle of NEXTLARGER characters has been broken at "];
PrintOctal[C];{PascalWriteLongString[file: @Output, item: "."]; PascalWriteLn[file: @Output]}; END; END--:116-- ENDLOOP;--118:--Delta←Shorten[1,255];
SetIndices[1,Delta];
IF Delta>0 THEN {PascalWriteLongString[file: @Output, item: "I had to round some "]; PascalWriteLongString[file: @Output, item: "width"]; PascalWriteLongString[file: @Output, item: "s by"]; PascalWriteReal[file: @Output, item: (PascalFLOAT[( PascalDIVPower2[(Delta+1
),1])]/PascalFLOAT[1048576]), fieldMinLength: 1, fracLength: 7]; PascalWriteLongString[file: @Output, item: " units."]; PascalWriteLn[file: @Output]};Delta←Shorten[2,15];
SetIndices[2,Delta];
IF Delta>0 THEN {PascalWriteLongString[file: @Output, item: "I had to round some "]; PascalWriteLongString[file: @Output, item: "height"]; PascalWriteLongString[file: @Output, item: "s by"]; PascalWriteReal[file: @Output, item: (PascalFLOAT[( PascalDIVPower2[(Delta
+1),1])]/PascalFLOAT[1048576]), fieldMinLength: 1, fracLength: 7]; PascalWriteLongString[file: @Output, item: " units."]; PascalWriteLn[file: @Output]};Delta←Shorten[3,15];
SetIndices[3,Delta];
IF Delta>0 THEN {PascalWriteLongString[file: @Output, item: "I had to round some "]; PascalWriteLongString[file: @Output, item: "depth"]; PascalWriteLongString[file: @Output, item: "s by"]; PascalWriteReal[file: @Output, item: (PascalFLOAT[( PascalDIVPower2[(Delta+1
),1])]/PascalFLOAT[1048576]), fieldMinLength: 1, fracLength: 7]; PascalWriteLongString[file: @Output, item: " units."]; PascalWriteLn[file: @Output]};Delta←Shorten[4,63];
SetIndices[4,Delta];
IF Delta>0 THEN {PascalWriteLongString[file: @Output, item: "I had to round some "]; PascalWriteLongString[file: @Output, item: "italic correction"]
; PascalWriteLongString[file: @Output, item: "s by"]; PascalWriteReal[file: @Output, item: (PascalFLOAT[( PascalDIVPower2[(Delta+1),1])]/PascalFLOAT[1048576]), fieldMinLength: 1, fracLength: 7]; PascalWriteLongString[file: @Output, item: " units."]; PascalWriteLn[file: @Output]};--:118----:109-- END;--:134
END.