-- file: TexMemory2Impl.mesa -- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:37 am PDT DIRECTORY PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexBuildPage, TexScan, TexOps, TexExtensions, TexRest, TexSysdep, TexSysdepInline; TexMemory2Impl: PROGRAM IMPORTS PascalBasic, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexExtensions, TexSysdepInline EXPORTS TexMemory = PUBLIC BEGIN OPEN PascalBasic, TexTypes, TexInteraction, TexMemory, TexSymbols, TexBuildPage, TexScan, TexOps, TexExtensions, TexRest, TexSysdep, TexSysdepInline; ShortDisplay: PROCEDURE[P: PascalInteger] = BEGIN N:PascalInteger; WHILE P>0 DO BEGIN IF(P>=HiMemMin) THEN BEGIN IF P<=MemEnd THEN BEGIN IF Mem[P]^.Hh.B0#FontInShortDisplay THEN BEGIN IF( INT[Mem[P]^.Hh.B0]<0)OR ( INT[Mem[P]^.Hh.B0]>FontMax) THEN PrintChar[42] ELSE--267: PrintEsc[Hash^[2768+Mem[P]^.Hh.B0].Rh]--:267--;PrintChar[32]; FontInShortDisplay_Mem[P]^.Hh.B0; END;PrintAscii[Mem[P]^.Hh.B1]; END; END ELSE--175:--SELECT Mem[P]^.Hh.B0 FROM 0,1,3,8,4,5,13 =>Print[180]; 2 =>PrintChar[124];10 =>IF Mem[P+1]^.Hh.Lh#0 THEN PrintChar[32]; 9 =>PrintChar[36];6 =>ShortDisplay[Mem[P+1]^.Hh.Rh]; 7 =>BEGIN ShortDisplay[Mem[P+1]^.Hh.Lh];ShortDisplay[Mem[P+1]^.Hh.Rh]; N_Mem[P]^.Hh.B1; WHILE N>0 DO BEGIN IF Mem[P]^.Hh.Rh#0 THEN P_Mem[P]^.Hh.Rh;N_N-1; END ENDLOOP ; END; ENDCASE => NULL--:175--;P_Mem[P]^.Hh.Rh; END ENDLOOP ; END;--:174----176: PrintFontAndChar: PROCEDURE[P: PascalInteger] = BEGIN IF P>MemEnd THEN PrintEsc[181] ELSE BEGIN IF( INT[Mem[P]^.Hh.B0]<0)OR ( INT[Mem[P]^.Hh.B0]>FontMax) THEN PrintChar[42] ELSE--267: PrintEsc[Hash^[2768+Mem[P]^.Hh.B0].Rh]--:267--;PrintChar[32]; PrintAscii[Mem[P]^.Hh.B1]; END; END; PrintMark: PROCEDURE[P: PascalInteger] = BEGIN PrintChar[123]; IF(PMemEnd) THEN PrintEsc[181] ELSE ShowTokenList[Mem [P]^.Hh.Rh,0,MaxPrintLine-10];PrintChar[125]; END; PrintRuleDimen: PROCEDURE[D: Scaled] = BEGIN IF(D=-1073741824) THEN PrintChar[42] ELSE PrintScaled[D]; END; --:176----177:-- PrintGlue: PROCEDURE[D: Scaled,Order: PascalInteger,S: StrNumber] = BEGIN PrintScaled[D]; IF(Order<0)OR (Order>3) THEN Print[182] ELSE IF Order>0 THEN BEGIN Print[ 183];WHILE Order>1 DO BEGIN PrintChar[108];Order_Order-1; END ENDLOOP ; END ELSE IF S#0 THEN Print[S]; END;--:177----178: PrintSpec: PROCEDURE[P: PascalInteger,S: StrNumber] = BEGIN IF(P=LoMemMax) THEN PrintChar[42] ELSE BEGIN PrintScaled[Mem[P+1]^.Int];IF S#0 THEN Print[S]; IF Mem[P+2]^.Int#0 THEN BEGIN Print[184]; PrintGlue[Mem[P+2]^.Int,Mem[P]^.Hh.B0,S]; END; IF Mem[P+3]^.Int#0 THEN BEGIN Print[185]; PrintGlue[Mem[P+3]^.Int,Mem[P]^.Hh.B1,S]; END; END; END;--:178----179:----691: ShowNodeList: PROCEDURE[P: Halfword] = BEGIN N:PascalInteger;G:PascalReal; {IF( INT[PoolPtr]-StrStart^[StrPtr])>DepthThreshold THEN BEGIN IF INT[P]>0 THEN Print[186]; GOTO Label10; END;N_0;WHILE INT[P]>0 DO BEGIN PrintLn[]; PrintCurrentString[];IF INT[P]>MemEnd THEN BEGIN Print[187]; GOTO Label10; END; N_N+1;IF N>BreadthMax THEN BEGIN Print[188]; GOTO Label10; END;--183: IF( INT[P]>=HiMemMin) THEN PrintFontAndChar[P] ELSE SELECT Mem[P]^.Hh.B0 FROM 0, 1,13 =>--184: BEGIN IF Mem[P]^.Hh.B0=0 THEN PrintEsc[104] ELSE IF Mem[P]^.Hh.B0=1 THEN PrintEsc[118] ELSE PrintEsc[190];Print[191];PrintScaled[Mem[P+3]^.Int]; PrintChar[43];PrintScaled[Mem[P+2]^.Int];Print[192]; PrintScaled[Mem[P+1]^.Int];IF Mem[P]^.Hh.B0=13 THEN--185: BEGIN IF Mem[P]^.Hh.B1#0 THEN BEGIN Print[158]; PrintInt[Mem[P]^.Hh.B1+1];Print[194]; END; IF Mem[P+6]^.Int#0 THEN BEGIN Print[195]; PrintGlue[Mem[P+6]^.Int,Mem[P+5]^.Hh.B1,0]; END; IF Mem[P+4]^.Int#0 THEN BEGIN Print[196]; PrintGlue[Mem[P+4]^.Int,Mem[P+5]^.Hh.B0,0]; END; END--:185-- ELSE BEGIN--186: G_Mem[P+6]^.Gr;IF(G#0.0)AND (Mem[P+5]^.Hh.B0#0) THEN BEGIN Print[197]; IF Mem[P+5]^.Hh.B0=2 THEN Print[198]; IF ABS[Mem[P+6]^.Int]<1048576 THEN Print[199] ELSE IF ABS[G]>20000.0 THEN BEGIN IF G>0.0 THEN PrintChar[62] ELSE Print[200]; PrintGlue[20000*65536,Mem[P+5]^.Hh.B1,0]; END ELSE PrintGlue[PascalROUND[PascalFLOAT[65536]*G],Mem[P+5]^.Hh.B1,0]; END--:186--; IF Mem[P+4]^.Int#0 THEN BEGIN Print[193];PrintScaled[Mem[P+4]^.Int]; END; END;BEGIN BEGIN StrPool^[PoolPtr]_46;PoolPtr_PoolPtr+1; END; ShowNodeList[Mem[P+5]^.Hh.Rh];PoolPtr_ INT[PoolPtr]-1; END; END--:184--; 2 =>--187:--BEGIN PrintEsc[201];PrintRuleDimen[Mem[P+3]^.Int]; PrintChar[43];PrintRuleDimen[Mem[P+2]^.Int];Print[192]; PrintRuleDimen[Mem[P+1]^.Int]; END--:187--;3 =>--188:--BEGIN PrintEsc[202]; PrintInt[Mem[P]^.Hh.B1];Print[203];PrintScaled[Mem[P+3]^.Int]; Print[204];PrintSpec[Mem[P+4]^.Hh.Rh,0];PrintChar[44]; PrintScaled[Mem[P+2]^.Int];Print[205];PrintInt[Mem[P+1]^.Int]; BEGIN BEGIN StrPool^[PoolPtr]_46;PoolPtr_PoolPtr+1; END; ShowNodeList[Mem[P+4]^.Hh.Lh];PoolPtr_ INT[PoolPtr]-1; END; END--:188--; 8 =>--1356:--SELECT Mem[P]^.Hh.B1 FROM 0 =>BEGIN PrintWriteWhatsit[1134,P]; PrintChar[61]; PrintFileName[Mem[P+1]^.Hh.Rh,Mem[P+2]^.Hh.Lh,Mem[P+2]^.Hh.Rh]; END; 1 =>BEGIN PrintWriteWhatsit[456,P];PrintMark[Mem[P+1]^.Hh.Rh]; END; 2 =>PrintWriteWhatsit[1135,P];3 =>BEGIN PrintEsc[1136]; PrintMark[Mem[P+1]^.Hh.Rh]; END; ENDCASE =>Print[1140]--:1356--;10 =>--189: IF INT[Mem[P]^.Hh.B1]>=100 THEN--190:--BEGIN PrintEsc[210]; IF Mem[P]^.Hh.B1=101 THEN PrintChar[99] ELSE IF Mem[P]^.Hh.B1=102 THEN PrintChar[120];Print[211];PrintSpec[Mem[P+1]^.Hh.Lh,0]; BEGIN BEGIN StrPool^[PoolPtr]_46;PoolPtr_PoolPtr+1; END; ShowNodeList[Mem[P+1]^.Hh.Rh];PoolPtr_ INT[PoolPtr]-1; END; END--:190 ELSE BEGIN PrintEsc[206];IF Mem[P]^.Hh.B1#0 THEN BEGIN PrintChar[40]; IF INT[Mem[P]^.Hh.B1]<98 THEN PrintSkipParam[Mem[P]^.Hh.B1-1] ELSE IF Mem[P]^. Hh.B1=98 THEN PrintEsc[207] ELSE PrintEsc[208];PrintChar[41]; END; IF Mem[P]^.Hh.B1#98 THEN BEGIN PrintChar[32]; IF INT[Mem[P]^.Hh.B1]<98 THEN PrintSpec[Mem[P+1]^.Hh.Lh,0] ELSE PrintSpec[Mem[ P+1]^.Hh.Lh,209]; END; END--:189--;11 =>--191: IF INT[Mem[P]^.Hh.B1]<=1 THEN BEGIN PrintEsc[212]; IF Mem[P]^.Hh.B1=1 THEN PrintChar[32];PrintScaled[Mem[P+1]^.Int]; END ELSE BEGIN PrintEsc[213];PrintScaled[Mem[P+1]^.Int];Print[209]; END--:191--;9 =>--192:--BEGIN PrintEsc[214]; IF Mem[P]^.Hh.B1=0 THEN Print[215] ELSE Print[216]; IF Mem[P+1]^.Int#0 THEN BEGIN Print[217];PrintScaled[Mem[P+1]^.Int]; END; END--:192--;6 =>--193:--BEGIN PrintFontAndChar[P+1];Print[218]; FontInShortDisplay_Mem[P+1]^.Hh.B0;ShortDisplay[Mem[P+1]^.Hh.Rh]; PrintChar[41]; END--:193--;12 =>--194:--BEGIN PrintEsc[219]; PrintInt[Mem[P+1]^.Int]; END--:194--;7 =>--195:--BEGIN PrintEsc[220]; IF INT[Mem[P]^.Hh.B1]>0 THEN BEGIN Print[221];PrintInt[Mem[P]^.Hh.B1]; END; BEGIN BEGIN StrPool^[PoolPtr]_46;PoolPtr_PoolPtr+1; END; ShowNodeList[Mem[P+1]^.Hh.Lh];PoolPtr_ INT[PoolPtr]-1; END; BEGIN StrPool^[PoolPtr]_124;PoolPtr_PoolPtr+1; END; ShowNodeList[Mem[P+1]^.Hh.Rh];PoolPtr_ INT[PoolPtr]-1; END--:195--;4 =>--196: BEGIN PrintEsc[222];PrintMark[Mem[P+1]^.Int]; END--:196--;5 =>--197: BEGIN PrintEsc[223];BEGIN BEGIN StrPool^[PoolPtr]_46; PoolPtr_PoolPtr+1; END;ShowNodeList[Mem[P+1]^.Int]; PoolPtr_ INT[PoolPtr]-1; END; END--:197--;--690:--14 =>PrintStyle[Mem[P]^.Hh.B1]; 15 =>--695:--BEGIN PrintEsc[387];BEGIN StrPool^[PoolPtr]_68; PoolPtr_PoolPtr+1; END;ShowNodeList[Mem[P+1]^.Hh.Lh]; PoolPtr_ INT[PoolPtr]-1;BEGIN StrPool^[PoolPtr]_84;PoolPtr_PoolPtr+1; END;ShowNodeList[Mem[P+1]^.Hh.Rh];PoolPtr_ INT[PoolPtr]-1; BEGIN StrPool^[PoolPtr]_83;PoolPtr_PoolPtr+1; END; ShowNodeList[Mem[P+2]^.Hh.Lh];PoolPtr_ INT[PoolPtr]-1; BEGIN StrPool^[PoolPtr]_115;PoolPtr_PoolPtr+1; END; ShowNodeList[Mem[P+2]^.Hh.Rh];PoolPtr_ INT[PoolPtr]-1; END--:695--; 16,17,18,19,20,21,22,23,24,27,26,29,28,30,31 =>--696: BEGIN SELECT Mem[P]^.Hh.B0 FROM 16 =>PrintEsc[724];17 =>PrintEsc[725]; 18 =>PrintEsc[726];19 =>PrintEsc[727];20 =>PrintEsc[728];21 =>PrintEsc[729]; 22 =>PrintEsc[730];23 =>PrintEsc[731];27 =>PrintEsc[732];26 =>PrintEsc[733]; 29 =>PrintEsc[400];24 =>BEGIN PrintEsc[394];PrintDelimiter[P+4]; END; 28 =>BEGIN PrintEsc[370];PrintFamAndChar[P+4]; END; 30 =>BEGIN PrintEsc[734];PrintDelimiter[P+1]; END; 31 =>BEGIN PrintEsc[735];PrintDelimiter[P+1]; END; ENDCASE; IF Mem[P]^.Hh.B1#0 THEN IF Mem[P]^.Hh.B1=1 THEN PrintEsc[736] ELSE PrintEsc[737];IF INT[Mem[P]^.Hh.B0]<30 THEN PrintSubsidiaryData[P+1,46]; PrintSubsidiaryData[P+2,94];PrintSubsidiaryData[P+3,95]; END--:696--; 25 =>--697:--BEGIN PrintEsc[738]; IF Mem[P+1]^.Int=1073741824 THEN Print[739] ELSE PrintScaled[Mem[P+1]^.Int ]; IF(Mem[P+4]^.Qqqq.B0#0)OR (Mem[P+4]^.Qqqq.B1#0)OR (Mem[P+4]^.Qqqq.B2#0)OR ( Mem[P+4]^.Qqqq.B3#0) THEN BEGIN Print[740];PrintDelimiter[P+4]; END; IF(Mem[P+5]^.Qqqq.B0#0)OR (Mem[P+5]^.Qqqq.B1#0)OR (Mem[P+5]^.Qqqq.B2#0)OR ( Mem[P+5]^.Qqqq.B3#0) THEN BEGIN Print[741];PrintDelimiter[P+5]; END; PrintSubsidiaryData[P+2,92];PrintSubsidiaryData[P+3,47]; END--:697--; --:690-- ENDCASE =>Print[189]--:183--;P_Mem[P]^.Hh.Rh; END ENDLOOP ;EXITS Label10 => NULL}; END;--:182----198: ShowBox: PROCEDURE[P: Halfword] = BEGIN--236: DepthThreshold_Eqtb^[4792].Int;BreadthMax_Eqtb^[4791].Int--:236--; IF BreadthMax<=0 THEN BreadthMax_5; IF PoolPtr+DepthThreshold>=PoolSize THEN DepthThreshold_ INT[PoolSize-PoolPtr]-1;ShowNodeList[P];PrintLn[]; END;--:198----200: DeleteTokenRef: PROCEDURE[P: Halfword] = BEGIN IF Mem[P]^.Hh.Lh=0 THEN FlushList[P] ELSE Mem[P]^.Hh.Lh_ INT[Mem[P]^.Hh. Lh]-1; END;--:200----201:-- DeleteGlueRef: PROCEDURE[P: Halfword] = BEGIN IF Mem[P]^.Hh.Rh=0 THEN FreeNode[P,4] ELSE Mem[P]^.Hh.Rh_ INT[Mem[P]^.Hh. Rh]-1; END;--:201----202:-- FlushNodeList: PROCEDURE[P: Halfword] = BEGIN Q:Halfword; WHILE P#0 DO BEGIN Q_Mem[P]^.Hh.Rh; IF( INT[P]>=HiMemMin) THEN BEGIN Mem[P]^.Hh.Rh_Avail;Avail_P; DynUsed_DynUsed-1; END ELSE BEGIN {SELECT Mem[P]^.Hh.B0 FROM 0,1,13 =>BEGIN FlushNodeList[Mem[P+5 ]^.Hh.Rh];FreeNode[P,7]; GOTO Label30; END;2 =>BEGIN FreeNode[P,4]; GOTO Label30; END; 3 =>BEGIN FlushNodeList[Mem[P+4]^.Hh.Lh];DeleteGlueRef[Mem[P+4]^.Hh.Rh]; FreeNode[P,5]; GOTO Label30; END;8 =>--1358: BEGIN SELECT Mem[P]^.Hh.B1 FROM 0 =>FreeNode[P,3]; 1,3 =>BEGIN DeleteTokenRef[Mem[P+1]^.Hh.Rh];FreeNode[P,2]; GOTO Label30; END; 2 =>FreeNode[P,2]; ENDCASE =>Confusion[1142]; GOTO Label30; END--:1358--; 10 =>BEGIN BEGIN IF Mem[Mem[P+1]^.Hh.Lh]^.Hh.Rh=0 THEN FreeNode[Mem[P+1]^.Hh .Lh,4] ELSE Mem[Mem[P+1]^.Hh.Lh]^.Hh.Rh_ INT[Mem[Mem[P+1]^.Hh.Lh]^.Hh.Rh]-1; END; IF Mem[P+1]^.Hh.Rh#0 THEN FlushNodeList[Mem[P+1]^.Hh.Rh]; END;11,9,12 => NULL; 6 =>FlushNodeList[Mem[P+1]^.Hh.Rh];4 =>DeleteTokenRef[Mem[P+1]^.Int]; 7 =>BEGIN FlushNodeList[Mem[P+1]^.Hh.Lh];FlushNodeList[Mem[P+1]^.Hh.Rh]; END;5 =>FlushNodeList[Mem[P+1]^.Int];--698:--14 =>BEGIN FreeNode[P,3]; GOTO Label30; END;15 =>BEGIN FlushNodeList[Mem[P+1]^.Hh.Lh]; FlushNodeList[Mem[P+1]^.Hh.Rh];FlushNodeList[Mem[P+2]^.Hh.Lh]; FlushNodeList[Mem[P+2]^.Hh.Rh];FreeNode[P,3]; GOTO Label30; END; 16,17,18,19,20,21,22,23,24,27,26,29,28 =>BEGIN IF INT[Mem[P+1]^.Hh.Rh]>=2 THEN FlushNodeList[Mem[P+1]^.Hh.Lh]; IF INT[Mem[P+2]^.Hh.Rh]>=2 THEN FlushNodeList[Mem[P+2]^.Hh.Lh]; IF INT[Mem[P+3]^.Hh.Rh]>=2 THEN FlushNodeList[Mem[P+3]^.Hh.Lh]; IF Mem[P]^.Hh.B0=24 THEN FreeNode[P,5] ELSE IF Mem[P]^.Hh.B0=28 THEN FreeNode[P,5] ELSE FreeNode[P,4]; GOTO Label30; END; 30,31 =>BEGIN FreeNode[P,4]; GOTO Label30; END; 25 =>BEGIN FlushNodeList[Mem[P+2]^.Hh.Lh]; FlushNodeList[Mem[P+3]^.Hh.Lh];FreeNode[P,6]; GOTO Label30; END;--:698 ENDCASE =>Confusion[224];FreeNode[P,2];EXITS Label30 => NULL}; END;P_Q; END ENDLOOP ; END;--:202----204: END.