-- 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]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]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.