-- file: TexScan2Impl.mesa -- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:37 am PDT DIRECTORY PascalBasic, PascalWizardFiles, TexSysdep, TexTypes, TexInteraction, TexBuildPage, TexMemory, TexSymbols, TexScan, TexOps, TexRest, TexSysdepInline; TexScan2Impl: PROGRAM IMPORTS PascalBasic, TexTypes, TexInteraction, TexBuildPage, TexMemory, TexSymbols, TexScan, TexOps, TexRest, TexSysdepInline EXPORTS TexScan = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, TexSysdep, TexTypes, TexInteraction, TexBuildPage, TexMemory, TexSymbols, TexScan, TexOps, TexRest, TexSysdepInline; --413:-- ScanSomethingInternal: PROCEDURE[Level: SmallNumber, Negative: PascalBoolean] = BEGIN M:Halfword;P:PascalInteger[0..NestSize]; M_CurChr; SELECT CurCmd FROM 84 =>--414:--BEGIN ScanSevenBitInt[]; IF M=4639 THEN BEGIN CurVal_Eqtb^[4639+CurVal].Hh.Rh;CurValLevel_0; END ELSE IF INT[M]<4639 THEN BEGIN CurVal_Eqtb^[M+CurVal].Hh.Rh; CurValLevel_0; END ELSE BEGIN CurVal_Eqtb^[M+CurVal].Int; CurValLevel_0; END; END--:414--;70,71,85,86,87 =>--415: IF Level#5 THEN BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134]; Print[525]; END;BEGIN HelpPtr_3;HelpLine^[2]_526;HelpLine^[1]_527; HelpLine^[0]_528; END;BackError[];BEGIN CurVal_0;CurValLevel_1; END; END ELSE IF INT[CurCmd]<=71 THEN BEGIN IF INT[CurCmd]<71 THEN BEGIN ScanEightBitInt[];M_3566+CurVal; END;BEGIN CurVal_Eqtb^[M].Hh.Rh; CurValLevel_5; END; END ELSE BEGIN BackInput[];ScanFontIdent[]; BEGIN CurVal_2768+CurVal;CurValLevel_4; END; END--:415--; 72 =>BEGIN CurVal_Eqtb^[M].Int;CurValLevel_0; END; 73 =>BEGIN CurVal_Eqtb^[M].Int;CurValLevel_1; END; 74 =>BEGIN CurVal_Eqtb^[M].Hh.Rh;CurValLevel_2; END; 75 =>BEGIN CurVal_Eqtb^[M].Hh.Rh;CurValLevel_3; END;78 =>--418: IF ABS[CurList.ModeField]#M THEN BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[539]; END;PrintCmdChr[78,M];BEGIN HelpPtr_4; HelpLine^[3]_540;HelpLine^[2]_541;HelpLine^[1]_542;HelpLine^[0]_543; END;Error[];IF Level#5 THEN BEGIN CurVal_0;CurValLevel_1; END ELSE BEGIN CurVal_0;CurValLevel_0; END; END ELSE BEGIN CurVal_CurList.AuxField; IF M=1 THEN CurValLevel_1 ELSE CurValLevel_0; END--:418--;79 =>--422: BEGIN Nest^[NestPtr]_CurList;P_NestPtr; WHILE ABS[Nest^[P].ModeField]#1 DO P_P-1 ENDLOOP ; BEGIN CurVal_Nest^[P].PgField;CurValLevel_0; END; END--:422--;81 =>--419: BEGIN IF M=0 THEN CurVal_DeadCycles ELSE CurVal_InsertPenalties; CurValLevel_0; END--:419--;80 =>--421: BEGIN IF PageContents=0 THEN IF M=0 THEN CurVal_1073741823 ELSE CurVal_0 ELSE CurVal_PageSoFar^[M];CurValLevel_1; END--:421--; 83 =>--423: BEGIN IF Eqtb^[3556].Hh.Rh=0 THEN CurVal_0 ELSE CurVal_Mem[Eqtb^[3556] .Hh.Rh]^.Hh.Lh;CurValLevel_0; END--:423--;82 =>--420: BEGIN ScanEightBitInt[]; IF Eqtb^[3822+CurVal].Hh.Rh=0 THEN CurVal_0 ELSE CurVal_Mem[ INT[Eqtb^ [3822+CurVal].Hh.Rh]+M]^.Int;CurValLevel_1; END--:420--; 67,68 =>BEGIN CurVal_CurChr;CurValLevel_0; END;76 =>--425: BEGIN FindFontDimen[FALSE];FontInfo^[FmemPtr].Int_0; BEGIN CurVal_FontInfo^[CurVal].Int;CurValLevel_1; END; END--:425--; 77 =>--426:--BEGIN ScanFontIdent[]; IF M=0 THEN BEGIN CurVal_HyphenChar^[CurVal];CurValLevel_0; END ELSE BEGIN CurVal_SkewChar^[CurVal];CurValLevel_0; END; END--:426--;88 =>--427:--BEGIN ScanEightBitInt[]; SELECT M FROM 0 =>CurVal_Eqtb^[4817+CurVal].Int; 1 =>CurVal_Eqtb^[5221+CurVal].Int;2 =>CurVal_Eqtb^[3044+CurVal].Hh.Rh; 3 =>CurVal_Eqtb^[3300+CurVal].Hh.Rh; ENDCASE;CurValLevel_M; END--:427--; 69 =>--424:--BEGIN IF CurChr=2 THEN CurVal_0 ELSE CurVal_0; CurValLevel_CurChr; IF NOT ( INT[CurList.TailField]>=HiMemMin)AND (CurList.ModeField#0) THEN SELECT CurChr FROM 0 =>IF Mem[CurList.TailField]^.Hh.B0=12 THEN CurVal_Mem [CurList.TailField+1]^.Int; 1 =>IF Mem[CurList.TailField]^.Hh.B0=11 THEN CurVal_Mem[CurList. TailField+1]^.Int; 2 =>IF Mem[CurList.TailField]^.Hh.B0=10 THEN BEGIN CurVal_Mem[CurList. TailField+1]^.Hh.Lh; IF Mem[CurList.TailField]^.Hh.B1=99 THEN CurValLevel_3; END; ENDCASE ELSE IF(CurList.ModeField=1)AND (CurList.TailField=CurList. HeadField) THEN SELECT CurChr FROM 0 =>CurVal_LastPenalty; 1 =>CurVal_LastKern;2 =>IF LastGlue#65515 THEN CurVal_LastGlue; ENDCASE; END--:424--; ENDCASE =>--428:--BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134]; Print[544]; END;PrintCmdChr[CurCmd,CurChr];Print[545];PrintEsc[398]; BEGIN HelpPtr_1;HelpLine^[0]_543; END;Error[]; IF Level#5 THEN BEGIN CurVal_0;CurValLevel_1; END ELSE BEGIN CurVal_0;CurValLevel_0; END; END--:428--; WHILE INT[CurValLevel]>Level DO--429: BEGIN IF CurValLevel=2 THEN CurVal_Mem[CurVal+1]^.Int ELSE IF CurValLevel=3 THEN MuError[];CurValLevel_CurValLevel-1; END--:429-- ENDLOOP ; --430:--IF Negative THEN IF INT[CurValLevel]>=2 THEN BEGIN CurVal_NewSpec[ CurVal];--431:--BEGIN Mem[CurVal+1]^.Int_-Mem[CurVal+1]^.Int; Mem[CurVal+2]^.Int_-Mem[CurVal+2]^.Int; Mem[CurVal+3]^.Int_-Mem[CurVal+3]^.Int; END--:431--; END ELSE CurVal_-CurVal ELSE IF( INT[CurValLevel]>=2)AND ( INT[CurValLevel]<=3 ) THEN Mem[CurVal]^.Hh.Rh_Mem[CurVal]^.Hh.Rh+1--:430--; END;--:413----440: ScanDimen: PROCEDURE[Mu,Inf,Shortcut: PascalBoolean] = BEGIN Negative:PascalBoolean;F:PascalInteger;--450: Num, Denom:PascalInteger;K:SmallNumber;V:Scaled;SaveCurVal:PascalInteger;--:450 --443:-- F_0;ArithError_FALSE;CurOrder_0;Negative_FALSE; {IF NOT Shortcut THEN BEGIN--441:--Negative_FALSE;DO--406: DO GetXToken[]; IF CurCmd#10--:406-- THEN EXIT; ENDLOOP; IF CurTok=3117 THEN BEGIN Negative_ NOT Negative;CurTok_3115; END; IF CurTok#3115--:441-- THEN EXIT; ENDLOOP;IF( INT[CurCmd]>=67)AND ( INT[CurCmd]<=88) THEN--449: IF Mu THEN BEGIN ScanSomethingInternal[3,FALSE];--451: IF INT[CurValLevel]>=2 THEN BEGIN V_Mem[CurVal+1]^.Int; DeleteGlueRef[CurVal];CurVal_V; END--:451--; IF CurValLevel=3 THEN GOTO Label89;IF CurValLevel#0 THEN MuError[]; END ELSE BEGIN ScanSomethingInternal[1,FALSE]; IF CurValLevel=1 THEN GOTO Label89; END--:449-- ELSE BEGIN BackInput[]; IF CurTok=3116 THEN CurTok_3118; IF CurTok#3118 THEN ScanInt [] ELSE BEGIN Radix_10;CurVal_0; END; IF CurTok=3116 THEN CurTok_3118; IF(Radix=10)AND (CurTok=3118) THEN--452:--BEGIN K_0;GetToken[]; {WHILE TRUE DO BEGIN GetXToken[]; IF( INT[CurTok]>3129)OR ( INT[CurTok]<3120) THEN GOTO Label31; IF INT[K]<17 THEN BEGIN Dig^[K]_ INT[CurTok]-3120;K_K+1; END; END ENDLOOP ; EXITS Label31 => NULL};F_RoundDecimals[K];IF CurCmd#10 THEN BackInput[]; END--:452--; END; END;IF CurVal<0 THEN BEGIN Negative_ NOT Negative;CurVal_-CurVal; END;--453:--{{IF Inf THEN--454:--IF ScanKeyword[183] THEN BEGIN CurOrder_1; WHILE ScanKeyword[108]DO BEGIN IF CurOrder=3 THEN BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[565]; END;Print[566]; BEGIN HelpPtr_1;HelpLine^[0]_567; END;Error[]; END ELSE CurOrder_CurOrder+1; END ENDLOOP ; GOTO Label88; END--:454--;--455: SaveCurVal_CurVal;--406:--DO GetXToken[]; IF CurCmd#10--:406-- THEN EXIT; ENDLOOP; {{IF( INT[CurCmd]<67)OR ( INT[CurCmd]>88) THEN BackInput [] ELSE BEGIN IF Mu THEN BEGIN ScanSomethingInternal[3,FALSE];--451: IF INT[CurValLevel]>=2 THEN BEGIN V_Mem[CurVal+1]^.Int; DeleteGlueRef[CurVal];CurVal_V; END--:451--; IF CurValLevel#3 THEN MuError[]; END ELSE ScanSomethingInternal[1,FALSE];V_CurVal; GOTO Label40; END; IF Mu THEN GOTO Label45;IF ScanKeyword[568] THEN V_(--558: FontInfo^[6+ParamBase^[Eqtb^[4078].Hh.Rh]].Int--:558 ) ELSE IF ScanKeyword[569] THEN V_(--559: FontInfo^[5+ParamBase^[Eqtb^[4078].Hh.Rh]].Int--:559--) ELSE GOTO Label45;--443: BEGIN GetXToken[];IF CurCmd#10 THEN BackInput[]; END--:443--; EXITS Label40 => NULL};CurVal_NxPlusY[SaveCurVal,V,XnOverD[V,F,65536]]; GOTO Label89; EXITS Label45 => NULL};--:455--IF Mu THEN--456: IF ScanKeyword[209] THEN GOTO Label88 ELSE BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[565]; END;Print[570];BEGIN HelpPtr_4; HelpLine^[3]_571;HelpLine^[2]_572;HelpLine^[1]_573;HelpLine^[0]_574; END;Error[]; GOTO Label88; END--:456--;IF ScanKeyword[564] THEN--457: BEGIN PrepareMag[]; IF Eqtb^[4784].Int#1000 THEN BEGIN CurVal_XnOverD[CurVal,1000,Eqtb^ [4784].Int];F_ (1000*F+65536*Remainder)/Eqtb^[4784].Int; CurVal_CurVal+( PascalDIVPower2[F ,16]);F_ PascalMODPower2Mask[F ,65535]; END; END--:457--; IF ScanKeyword[265] THEN GOTO Label88;--458: {IF ScanKeyword[575] THEN BEGIN Num_7227;Denom_100; END ELSE IF ScanKeyword[576] THEN BEGIN Num_12;Denom_1; END ELSE IF ScanKeyword[577] THEN BEGIN Num_7227;Denom_254; END ELSE IF ScanKeyword[578] THEN BEGIN Num_7227;Denom_2540; END ELSE IF ScanKeyword[579] THEN BEGIN Num_7227;Denom_7200; END ELSE IF ScanKeyword[580] THEN BEGIN Num_1238;Denom_1157; END ELSE IF ScanKeyword[581] THEN BEGIN Num_14856;Denom_1157; END ELSE IF ScanKeyword[582] THEN GOTO Label30 ELSE--459: BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[565]; END; Print[583];BEGIN HelpPtr_6;HelpLine^[5]_584;HelpLine^[4]_585; HelpLine^[3]_586;HelpLine^[2]_572;HelpLine^[1]_573;HelpLine^[0]_574; END;Error[]; GOTO Label32; END--:459--;CurVal_XnOverD[CurVal,Num,Denom]; F_ (Num*F+65536*Remainder)/Denom;CurVal_CurVal+( PascalDIVPower2[F ,16]); F_ PascalMODPower2Mask[F ,65535];EXITS Label32 => NULL};--:458--EXITS Label88 => NULL};IF CurVal>=16384 THEN ArithError_TRUE ELSE CurVal_ CurVal*65536+F;EXITS Label30 => NULL};--:453--BEGIN GetXToken[];IF CurCmd#10 THEN BackInput[]; END--:443--;EXITS Label89 => NULL};IF ArithError OR (ABS[CurVal]>=1073741824) THEN--460: BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[587]; END; BEGIN HelpPtr_2;HelpLine^[1]_588;HelpLine^[0]_589; END;Error[]; CurVal_1073741823;ArithError_FALSE; END--:460--; IF Negative THEN CurVal_-CurVal; END;--:448----461: ScanGlue: PROCEDURE[Level: SmallNumber] = BEGIN Negative:PascalBoolean; Q:Halfword;Mu:PascalBoolean; Mu_(Level=3);--441:--Negative_FALSE; DO--406:--DO GetXToken[]; IF CurCmd#10--:406-- THEN EXIT; ENDLOOP; IF CurTok=3117 THEN BEGIN Negative_ NOT Negative;CurTok_3115; END; IF CurTok#3115--:441-- THEN EXIT; ENDLOOP; {IF( INT[CurCmd]>=67)AND ( INT[CurCmd]<=88) THEN BEGIN ScanSomethingInternal[Level, Negative]; IF INT[CurValLevel]>=2 THEN BEGIN IF CurValLevel#Level THEN MuError[]; GOTO Label10; END; IF CurValLevel=0 THEN ScanDimen[Mu,FALSE,TRUE] ELSE IF Level=3 THEN MuError[]; END ELSE BEGIN BackInput[];ScanDimen[Mu,FALSE,FALSE]; IF Negative THEN CurVal_-CurVal; END;--462:--Q_NewSpec[0]; Mem[Q+1]^.Int_CurVal; IF ScanKeyword[590] THEN BEGIN ScanDimen[Mu,TRUE,FALSE]; Mem[Q+2]^.Int_CurVal;Mem[Q]^.Hh.B0_CurOrder; END; IF ScanKeyword[591] THEN BEGIN ScanDimen[Mu,TRUE,FALSE]; Mem[Q+3]^.Int_CurVal;Mem[Q]^.Hh.B1_CurOrder; END;CurVal_Q--:462--; EXITS Label10 => NULL}; END;--:461----463:-- END.