-- file: TexExtensionsImpl.mesa -- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:38 am PDT DIRECTORY PascalBasic, TexTypes, TexSysdep, TexSysdepInline, TexInteraction, TexMemory, TexSymbols, TexScan, TexDvi, TexBuildPage, TexRest, TexExtensions; TexExtensionsImpl: PROGRAM IMPORTS TexTypes, TexSysdep, TexSysdepInline, TexInteraction, TexMemory, TexSymbols, TexScan, TexDvi, TexBuildPage, TexRest EXPORTS TexExtensions = PUBLIC BEGIN OPEN PascalBasic, TexTypes, TexSysdep, TexSysdepInline, TexInteraction, TexMemory, TexSymbols, TexScan, TexDvi, TexBuildPage, TexRest, TexExtensions; PrintWriteWhatsit: PROCEDURE[S: StrNumber,P: Halfword] = BEGIN PrintEsc[S]; IF INT[Mem[P+1]^.Hh.Lh]<16 THEN PrintInt[Mem[P+1]^.Hh.Lh] ELSE IF Mem[P+1]^.Hh. Lh=16 THEN PrintChar[42] ELSE PrintChar[45]; END;--:1355----78: --:618----619:----1368: SpecialOut: PROCEDURE[P: Halfword] = BEGIN OldSetting:PascalInteger[0..21];K:PoolPointer; IF CurH#DviH THEN BEGIN Movement[CurH-DviH,143];DviH_CurH; END;IF CurV#DviV THEN BEGIN Movement[CurV-DviV,157];DviV_CurV; END;OldSetting_Selector;Selector_21; ShowTokenList[Mem[Mem[P+1]^.Hh.Rh]^.Hh.Rh,0,PoolSize-PoolPtr]; Selector_OldSetting; BEGIN IF INT[PoolPtr+1]>PoolSize THEN Overflow[129,PoolSize-InitPoolPtr] ; END; IF( INT[PoolPtr]-StrStart^[StrPtr])<256 THEN BEGIN BEGIN DviBuf^[DviPtr]_ 239;DviPtr_DviPtr+1;IF DviPtr=DviLimit THEN DviSwap[]; END; BEGIN DviBuf^[DviPtr]_( INT[PoolPtr]-StrStart^[StrPtr]); DviPtr_DviPtr+1;IF DviPtr=DviLimit THEN DviSwap[]; END; END ELSE BEGIN BEGIN DviBuf^[DviPtr]_242;DviPtr_DviPtr+1; IF DviPtr=DviLimit THEN DviSwap[]; END; DviFour[( INT[PoolPtr]-StrStart^[StrPtr])]; END; FOR i:INT IN [ INT[StrStart^[StrPtr]].. INT[ INT[PoolPtr]-1 ]] DO K _ i; DviBuf^[DviPtr]_ StrPool^[K];DviPtr_DviPtr+1;IF DviPtr=DviLimit THEN DviSwap[]; ENDLOOP; PoolPtr_StrStart^[StrPtr]; END;--:1368----1370: WriteOut: PROCEDURE[P: Halfword] = BEGIN OldSetting:PascalInteger[0..21];OldMode:PascalInteger; J:SmallNumber;Q, R:Halfword;--1371:--Q_GetAvail[];Mem[Q]^.Hh.Lh_637; R_GetAvail[];Mem[Q]^.Hh.Rh_R;Mem[R]^.Hh.Lh_6862;BeginTokenList[Q,4]; BeginTokenList[Mem[P+1]^.Hh.Rh,15];Q_GetAvail[];Mem[Q]^.Hh.Lh_379; BeginTokenList[Q,4];OldMode_CurList.ModeField; CurList.ModeField_0;CurCs_WriteLoc;Q_ScanToks[FALSE,TRUE]; GetToken[];IF CurTok#6862 THEN--1372:--BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[1144]; END;BEGIN HelpPtr_2;HelpLine^[1]_1145; HelpLine^[0]_865; END;Error[];DO GetToken[]; IF CurTok=6862 THEN EXIT; ENDLOOP; END--:1372--;CurList.ModeField_OldMode;EndTokenList--:1371--[]; OldSetting_Selector;J_Mem[P+1]^.Hh.Lh; IF WriteOpen^[J] THEN Selector_J ELSE BEGIN IF(J=17)AND (Selector=19) THEN Selector_18;PrintNl[210]; END; ShowTokenList[Mem[DefRef]^.Hh.Rh,0,BufSize-10];PrintLn[]; FlushList[DefRef];Selector_OldSetting; END;--:1370----1373: OutWhat: PROCEDURE[P: Halfword] = BEGIN J:SmallNumber; SELECT Mem[P]^.Hh.B1 FROM 0,1,2 =>--1374: IF NOT DoingLeaders THEN BEGIN J_Mem[P+1]^.Hh.Lh; IF Mem[P]^.Hh.B1=1 THEN WriteOut[P] ELSE BEGIN IF WriteOpen^[J] THEN AClose[@WriteFile^[J]]; IF Mem[P]^.Hh.B1=2 THEN WriteOpen^[J]_FALSE ELSE IF INT[J]<16 THEN BEGIN CurName_Mem[P+1]^.Hh.Rh;CurArea_Mem[P+2]^.Hh.Lh; CurExt_Mem[P+2]^.Hh.Rh;IF CurExt=210 THEN CurExt_647; PackFileName[CurName,CurArea,CurExt]; WHILE NOT AOpenOut[@WriteFile^[J]]DO PromptFileName[1147,647] ENDLOOP ; WriteOpen^[J]_TRUE; END; END; END--:1374--;3 =>SpecialOut[P]; ENDCASE =>Confusion[1146]; END;--:1373----:1378----1396: PressOutWhat: PROCEDURE[P: Halfword] = BEGIN SELECT Mem[P]^.Hh.B1 FROM 0,1,2 =>OutWhat[P];3 => NULL; ENDCASE =>Confusion[1146]; END;--:1396----1379:-- NewWhatsit: PROCEDURE[S: SmallNumber,W: SmallNumber] = BEGIN P:Halfword; P_GetNode[W];Mem[P]^.Hh.B0_8;Mem[P]^.Hh.B1_S; Mem[CurList.TailField]^.Hh.Rh_P;CurList.TailField_P; END;--:1349 --1350:-- NewWriteWhatsit: PROCEDURE[W: SmallNumber] = BEGIN NewWhatsit[CurChr,W]; IF W#2 THEN ScanFourBitInt [] ELSE BEGIN ScanInt[]; IF CurVal<0 THEN CurVal_17 ELSE IF CurVal>15 THEN CurVal_16; END; Mem[CurList.TailField+1]^.Hh.Lh_CurVal; END;--:1350 DoExtension: PROCEDURE = BEGIN I, J, K:PascalInteger;P, Q, R:Halfword; SELECT CurChr FROM 0 =>--1351:--BEGIN NewWriteWhatsit[3]; ScanOptionalEquals[];ScanFileName[]; Mem[CurList.TailField+1]^.Hh.Rh_CurName; Mem[CurList.TailField+2]^.Hh.Lh_CurArea; Mem[CurList.TailField+2]^.Hh.Rh_CurExt; END--:1351--;1 =>--1352: BEGIN K_CurCs;NewWriteWhatsit[2];CurCs_K; P_ScanToks[FALSE,FALSE];Mem[CurList.TailField+1]^.Hh.Rh_DefRef; END--:1352--;2 =>--1353:--BEGIN NewWriteWhatsit[2]; Mem[CurList.TailField+1]^.Hh.Rh_0; END--:1353--;3 =>--1354: BEGIN NewWhatsit[3,2];Mem[CurList.TailField+1]^.Hh.Lh_0; P_ScanToks[FALSE,TRUE];Mem[CurList.TailField+1]^.Hh.Rh_DefRef; END--:1354--;4 =>--1375:--BEGIN GetXToken[]; IF(CurCmd=59)AND ( INT[CurChr]<=2) THEN BEGIN P_CurList.TailField; DoExtension[];OutWhat[CurList.TailField]; FlushNodeList[CurList.TailField];CurList.TailField_P; Mem[P]^.Hh.Rh_0; END ELSE BackInput[]; END--:1375--; ENDCASE =>Confusion[1139]; END;--:1348----1068: END.