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