-- file: TexDvi2Impl.mesa -- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:37 am PDT DIRECTORY PascalBasic, TexTypes, TexSysdep, TexSysdepInline, TexInteraction, TexMemory, TexSymbols, TexDvi, TexOps, TexBuildPage, TexExtensions; TexDvi2Impl: PROGRAM IMPORTS PascalBasic, TexSysdep, TexSysdepInline, TexInteraction, TexMemory, TexSymbols, TexDvi, TexOps, TexBuildPage, TexExtensions EXPORTS TexDvi = PUBLIC BEGIN OPEN PascalBasic, TexTypes, TexSysdep, TexSysdepInline, TexInteraction, TexMemory, TexSymbols, TexDvi, TexOps, TexBuildPage, TexExtensions; HlistPressOut: PROCEDURE = BEGIN BaseLine:Scaled;BaseInMica:Scaled; LeftEdge:Scaled;SaveH, SaveV:Scaled;ThisBox:Halfword; GOrder:GlueOrd;GSign:PascalInteger[0..2];P:Halfword;LeaderBox:Halfword; LeaderWd:Scaled;Lx:Scaled;OuterDoingLeaders:PascalBoolean;Edge:Scaled; ThisBox_TempPtr;GOrder_Mem[ThisBox+5]^.Hh.B1; GSign_Mem[ThisBox+5]^.Hh.B0;P_Mem[ThisBox+5]^.Hh.Rh;BaseLine_CurV; LeftEdge_CurH; BaseInMica_25400-XOverN[XnOverD[BaseLine,Eqtb^[4784].Int,18647], 100];WHILE P#0 DO--1380: DO {IF( INT[P]>=HiMemMin) THEN BEGIN PressSetY[BaseInMica]; F_Mem[P]^.Hh.B0;IF F#DviF THEN--1381: BEGIN IF NOT FontUsed^[F] THEN BEGIN FontPypeCode^[F]_GetPypeCode[F, XnOverD[FontSize^[F],Eqtb^[4784].Int,18647]];FontUsed^[F]_TRUE; END; PressSetFont[FontPypeCode^[F]];DviF_F; END--:1381--; PressSetX[2540+XOverN[XnOverD[CurH,Eqtb^[4784].Int,18647],100]]; DO C_Mem[P]^.Hh.B1;PressShowChar[C]; CurH_CurH+FontInfo^[WidthBase^[F]+FontInfo^[CharBase^[F]+C].Qqqq.B0]. Int;P_Mem[P]^.Hh.Rh; IF(NOT ( INT[P]>=HiMemMin))OR (Mem[P]^.Hh.B0#DviF) THEN EXIT; ENDLOOP; END ELSE--1382:--BEGIN {{{SELECT Mem[P]^.Hh.B0 FROM 0,1 =>--1383: IF Mem[P+5]^.Hh.Rh=0 THEN CurH_CurH+Mem[P+1]^.Int ELSE BEGIN CurV_ BaseLine+Mem[P+4]^.Int;TempPtr_P;Edge_CurH; IF Mem[P]^.Hh.B0=1 THEN VlistPressOut [] ELSE HlistPressOut[]; CurH_Edge+Mem[P+1]^.Int;CurV_BaseLine; END--:1383--; 2 =>BEGIN RuleHt_Mem[P+3]^.Int;RuleDp_Mem[P+2]^.Int; RuleWd_Mem[P+1]^.Int; GOTO Label14; END;8 =>--1397:--PressOutWhat[P]--:1397--; 10 =>--1385:--BEGIN G_Mem[P+1]^.Hh.Lh;RuleWd_Mem[G+1]^.Int; IF GSign#0 THEN BEGIN IF GSign=1 THEN BEGIN IF Mem[G]^.Hh.B0=GOrder THEN RuleWd_RuleWd+PascalROUND[Mem[ThisBox+6]^.Gr*PascalFLOAT[Mem[G+2]^.Int]]; END ELSE BEGIN IF Mem[G]^.Hh.B1=GOrder THEN RuleWd_RuleWd-PascalROUND[Mem[ ThisBox+6]^.Gr*PascalFLOAT[Mem[G+3]^.Int]]; END; END;IF INT[Mem[P]^.Hh.B1]>=100 THEN--1386: BEGIN LeaderBox_Mem[P+1]^.Hh.Rh; IF Mem[LeaderBox]^.Hh.B0=2 THEN BEGIN RuleHt_Mem[LeaderBox+3]^.Int; RuleDp_Mem[LeaderBox+2]^.Int; GOTO Label14; END; LeaderWd_Mem[LeaderBox+1]^.Int; IF(LeaderWd>0)AND (RuleWd>0) THEN BEGIN Edge_CurH+RuleWd;Lx_0;--627: IF Mem[P]^.Hh.B1=100 THEN BEGIN SaveH_CurH; CurH_LeftEdge+LeaderWd*( (CurH-LeftEdge)/LeaderWd); IF CurHCurH_CurH+Mem[P+1]^.Int;6 =>--652: BEGIN Mem[64988]^_Mem[P+1]^;Mem[64988]^.Hh.Rh_Mem[P]^.Hh.Rh;P_64988; GOTO Label21; END--:652--; ENDCASE => NULL; GOTO Label15;EXITS Label14 => NULL};--1384: IF(RuleHt=-1073741824) THEN RuleHt_Mem[ThisBox+3]^.Int; IF(RuleDp=-1073741824) THEN RuleDp_Mem[ThisBox+2]^.Int; RuleHt_RuleHt+RuleDp; IF(RuleHt>0)AND (RuleWd>0) THEN BEGIN PressShowRule[254000+XnOverD[ CurH,Eqtb^[4784].Int,18647],2540000-XnOverD[BaseLine+RuleDp,Eqtb^ [4784].Int,18647],XnOverD[RuleWd,Eqtb^[4784].Int,18647],XnOverD[ RuleHt,Eqtb^[4784].Int,18647]];CurV_BaseLine; END--:1384--; EXITS Label13 => NULL};CurH_CurH+RuleWd;EXITS Label15 => NULL};P_Mem[P]^.Hh.Rh; END--:1382----:1380--; EXIT; EXITS Label21 => NULL} ENDLOOP ENDLOOP ; END;--:1379 --1388:-- VlistPressOut: PROCEDURE = BEGIN LeftEdge:Scaled; TopEdge:Scaled;SaveH, SaveV:Scaled;ThisBox:Halfword;GOrder:GlueOrd; GSign:PascalInteger[0..2];P:Halfword;LeaderBox:Halfword;LeaderHt:Scaled;Lx:Scaled; OuterDoingLeaders:PascalBoolean;Edge:Scaled; ThisBox_TempPtr; GOrder_Mem[ThisBox+5]^.Hh.B1;GSign_Mem[ThisBox+5]^.Hh.B0; P_Mem[ThisBox+5]^.Hh.Rh;LeftEdge_CurH; CurV_CurV-Mem[ThisBox+3]^.Int;TopEdge_CurV;WHILE P#0 DO--1389: BEGIN {IF( INT[P]>=HiMemMin) THEN Confusion[685] ELSE--1390: BEGIN {{SELECT Mem[P]^.Hh.B0 FROM 0,1 =>--1391: IF Mem[P+5]^.Hh.Rh=0 THEN CurV_CurV+Mem[P+3]^.Int+Mem[P+2]^.Int ELSE BEGIN CurV_CurV+Mem[P+3]^.Int;SaveV_CurV; CurH_LeftEdge+Mem[P+4]^.Int;TempPtr_P; IF Mem[P]^.Hh.B0=1 THEN VlistPressOut [] ELSE HlistPressOut[]; CurV_SaveV+Mem[P+2]^.Int;CurH_LeftEdge; END--:1391--; 2 =>BEGIN RuleHt_Mem[P+3]^.Int;RuleDp_Mem[P+2]^.Int; RuleWd_Mem[P+1]^.Int; GOTO Label14; END;8 =>--1398:--PressOutWhat[P]--:1398--; 10 =>--1393:--BEGIN G_Mem[P+1]^.Hh.Lh;RuleHt_Mem[G+1]^.Int; IF GSign#0 THEN BEGIN IF GSign=1 THEN BEGIN IF Mem[G]^.Hh.B0=GOrder THEN RuleHt_RuleHt+PascalROUND[Mem[ThisBox+6]^.Gr*PascalFLOAT[Mem[G+2]^.Int]]; END ELSE BEGIN IF Mem[G]^.Hh.B1=GOrder THEN RuleHt_RuleHt-PascalROUND[Mem[ ThisBox+6]^.Gr*PascalFLOAT[Mem[G+3]^.Int]]; END; END;IF INT[Mem[P]^.Hh.B1]>=100 THEN--1394: BEGIN LeaderBox_Mem[P+1]^.Hh.Rh; IF Mem[LeaderBox]^.Hh.B0=2 THEN BEGIN RuleWd_Mem[LeaderBox+1]^.Int; RuleDp_0; GOTO Label14; END; LeaderHt_Mem[LeaderBox+3]^.Int+Mem[LeaderBox+2]^.Int; IF(LeaderHt>0)AND (RuleHt>0) THEN BEGIN Edge_CurV+RuleHt;Lx_0;--636: IF Mem[P]^.Hh.B1=100 THEN BEGIN SaveV_CurV; CurV_TopEdge+LeaderHt*( (CurV-TopEdge)/LeaderHt); IF CurVCurV_CurV+Mem[P+1]^.Int; ENDCASE => NULL; GOTO Label15;EXITS Label14 => NULL};--1392: IF(RuleWd=-1073741824) THEN RuleWd_Mem[ThisBox+1]^.Int; RuleHt_RuleHt+RuleDp;CurV_CurV+RuleHt; IF(RuleHt>0)AND (RuleWd>0) THEN BEGIN PressShowRule[254000+XnOverD[ CurH,Eqtb^[4784].Int,18647],2540000-XnOverD[CurV,Eqtb^[4784].Int,18647 ],XnOverD[RuleWd,Eqtb^[4784].Int,18647],XnOverD[RuleHt,Eqtb^[4784]. Int,18647]]; END; GOTO Label15--:1392--;EXITS Label13 => NULL};CurV_CurV+RuleHt; END--:1390--; EXITS Label15 => NULL};P_Mem[P]^.Hh.Rh; END--:1389-- ENDLOOP ; END;--:1388----:1377 END.