-- file: TexScan3Impl.mesa -- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:37 am PDT DIRECTORY PascalBasic, PascalWizardFiles, TexSysdep, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexRest, TexSysdepInline; TexScan3Impl: PROGRAM IMPORTS PascalWizardFiles, TexSysdep, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexRest, TexSysdepInline EXPORTS TexScan = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, TexSysdep, TexTypes, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexRest, TexSysdepInline; --518:-- PrintFileName: PROCEDURE[N,A,E: PascalInteger] = BEGIN Print[A];Print[N]; Print[E]; END;--:518----699:-- NormalizeSelector: PROCEDURE = BEGIN IF INT[JobName]>0 THEN Selector_19 ELSE Selector_17; IF Interaction=0 THEN Selector_Selector-1; IF JobName=0 THEN OpenLogFile[]; END;--:92----98: ScanFontIdent: PROCEDURE = BEGIN F:InternalFontNumber;M:Halfword; --406:--DO GetXToken[]; IF CurCmd#10--:406-- THEN EXIT; ENDLOOP; IF CurCmd=87 THEN F_Eqtb^[4078].Hh.Rh ELSE IF CurCmd=86 THEN F_ CurChr ELSE IF CurCmd=85 THEN BEGIN M_CurChr;ScanFourBitInt[]; F_Eqtb^[M+CurVal].Hh.Rh; END ELSE BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[674]; END;BEGIN HelpPtr_2;HelpLine^[1]_675; HelpLine^[0]_676; END;BackError[];F_0; END;CurVal_F; END;--:577----578: FindFontDimen: PROCEDURE[Writing: PascalBoolean] = BEGIN F:InternalFontNumber; N:PascalInteger; ScanInt[];N_CurVal;ScanFontIdent[];F_CurVal; IF N<=0 THEN CurVal_FmemPtr ELSE BEGIN IF Writing AND (N<=4)AND (N>=2) AND (FontGlue^[F]#0) THEN BEGIN DeleteGlueRef[FontGlue^[F]]; FontGlue^[F]_0; END; IF N>FontParams^[F] THEN IF INT[F]PoolSize THEN Overflow[129,PoolSize-InitPoolPtr] ; END;BEGIN StrPool^[PoolPtr]_C;PoolPtr_PoolPtr+1; END; MoreNameResult_TRUE; END; END;--:516----517:-- EndName: PROCEDURE = BEGIN IF INT[StrPtr+3]>MaxStrings THEN Overflow[130, MaxStrings-InitStrPtr]; IF AreaDelimiter=0 THEN CurArea_210 ELSE BEGIN CurArea_StrPtr; StrPtr_StrPtr+1;StrStart^[StrPtr]_AreaDelimiter+1; END; IF ExtDelimiter=0 THEN BEGIN CurExt_210;CurName_MakeString[]; END ELSE BEGIN CurName_StrPtr;StrPtr_StrPtr+1; StrStart^[StrPtr]_ExtDelimiter;CurExt_MakeString[]; END; END;--:517 --519:-- PackFileName: PROCEDURE[N,A,E: StrNumber] = BEGIN K:PascalInteger; C:AsciiCode;J:PoolPointer; K_0; FOR i:INT IN [ INT[StrStart^[A]].. INT[ INT[StrStart^[A+1]]-1 ]] DO J _ i; C_StrPool^[J];K_K+1; IF K<=FileNameSize THEN NameOfFile^[K]_Xchr^[C]; ENDLOOP; FOR i:INT IN [ INT[StrStart^[N]].. INT[ INT[StrStart^[N+1]]-1 ]] DO J _ i; C_StrPool^[J];K_K+1; IF K<=FileNameSize THEN NameOfFile^[K]_Xchr^[C]; ENDLOOP; FOR i:INT IN [ INT[StrStart^[E]].. INT[ INT[StrStart^[E+1]]-1 ]] DO J _ i; C_StrPool^[J];K_K+1; IF K<=FileNameSize THEN NameOfFile^[K]_Xchr^[C]; ENDLOOP; IF K<=FileNameSize THEN NameLength_K ELSE NameLength_ FileNameSize; FOR i:INT IN [ INT[NameLength+1 ].. INT[FileNameSize ]] DO K _ i; NameOfFile^[K]_' ENDLOOP; END; --:523----525: MakeNameString: PROCEDURE RETURNS[MakeNameStringResult: StrNumber] = BEGIN K:PascalInteger[1..FileNameSize]; BEGIN IF INT[PoolPtr+NameLength]>PoolSize THEN Overflow[129, PoolSize-InitPoolPtr]; END; FOR i:INT IN [ INT[1 ].. INT[NameLength ]] DO K _ i; StrPool^[PoolPtr]_Xord^[NameOfFile^[K ]];PoolPtr_PoolPtr+1; ENDLOOP;MakeNameStringResult_MakeString[]; END; --:525----526: ScanFileName: PROCEDURE = BEGIN NameInProgress_TRUE; BeginName[];--406:--DO GetXToken[]; IF CurCmd#10--:406-- THEN EXIT; ENDLOOP; {WHILE TRUE DO BEGIN IF( INT[CurCmd]>12)OR ( INT[CurChr]>127) THEN BEGIN BackInput[]; GOTO Label30; END;IF NOT MoreName[CurChr] THEN GOTO Label30;GetXToken[]; END ENDLOOP ; EXITS Label30 => NULL};EndName[];NameInProgress_FALSE; END;--:526----529: PackJobName: PROCEDURE[S: StrNumber] = BEGIN CurArea_210;CurExt_S; CurName_JobName;PackFileName[CurName,CurArea,CurExt]; END;--:529 --530:-- PromptFileName: PROCEDURE[S,E: StrNumber] = BEGIN K:PascalInteger[0..BufSize]; IF Interaction=2 THEN NULL; IF S=643 THEN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[644]; END ELSE BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[645]; END; PrintFileName[CurName,CurArea,CurExt];Print[646]; IF E=647 THEN ShowContext[];PrintNl[648];Print[S]; IF INT[Interaction]<2 THEN FatalError[649];BEGIN Print[430];TermInput[]; END; --531:--BEGIN BeginName[];K_First;WHILE(Buffer^[K]=32)AND ( INT[K] NULL};EndName[]; END--:531 ;IF CurExt=210 THEN CurExt_E; PackFileName[CurName,CurArea,CurExt]; END;--:530----534: OpenLogFile: PROCEDURE = BEGIN OldSetting:PascalInteger[0..21];K:PascalInteger[0..BufSize]; L:PascalInteger[0..BufSize];Months: PACKED ARRAY PascalInteger[1..36] OF PascalChar; OldSetting_Selector;IF JobName=0 THEN JobName_653; PackJobName[654];WHILE NOT AOpenOut[@LogFile]DO--535: BEGIN IF INT[Interaction]<2 THEN BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[134];Print[645]; END;PrintFileName[CurName,CurArea,CurExt]; Print[646];JobName_0;History_3;JumpOut[]; END; PromptFileName[656,654]; END--:535-- ENDLOOP ; LogName_AMakeNameString[@LogFile];Selector_18;--536: BEGIN PascalWriteLongString[file: @LogFile, item: "This is TeX 1.3 for Cedar 6.0"]; Print[FormatIdent];Print[657];PrintInt[Eqtb^[4788].Int];PrintChar[32]; Months_['J, 'A, 'N, 'F, 'E, 'B, 'M, 'A, 'R, 'A, 'P, 'R, 'M, 'A, 'Y, 'J, 'U, 'N, 'J, 'U, 'L, 'A, 'U, 'G, 'S, 'E, 'P, 'O, 'C, 'T, 'N, 'O, 'V, 'D, 'E, 'C]; FOR i:INT IN [ INT[3*Eqtb^[4789].Int-2 ].. INT[3*Eqtb^[4789].Int ]] DO K _ i; PascalWriteChar[file: @LogFile, item: Months[K ]] ENDLOOP;PrintChar[32];PrintInt[Eqtb^[4790].Int];PrintChar[32]; PrintTwo[ Eqtb^[4787].Int /60];PrintChar[58]; PrintTwo[ Eqtb^[4787].Int MOD 60]; END--:536--; InputStack^[InputPtr]_CurInput;PrintNl[655]; L_InputStack^[0].LimitField;IF Buffer^[L]=Eqtb^[4815].Int THEN L_L-1; FOR i:INT IN [ INT[1 ].. INT[L ]] DO K _ i; Print[Buffer^[K]] ENDLOOP;PrintLn[];Selector_OldSetting+2; END; --:534----537:-- StartInput: PROCEDURE = BEGIN ScanFileName[]; IF CurExt=210 THEN CurExt_647; PackFileName[CurName,CurArea,CurExt]; {WHILE TRUE DO BEGIN BeginFileReading[]; IF AOpenIn[@InputFile^[CurInput.IndexField]] THEN GOTO Label30; PackFileName[CurName,TexArea,CurExt]; IF AOpenIn[@InputFile^[CurInput.IndexField]] THEN GOTO Label30; EndFileReading[];PromptFileName[643,647]; END ENDLOOP ; EXITS Label30 => NULL};CurInput.NameField_AMakeNameString[@InputFile^[CurInput. IndexField]];IF JobName=0 THEN BEGIN JobName_CurName;OpenLogFile[]; END; IF TermOffset+( INT[StrStart^[CurInput.NameField+1]]-StrStart^[CurInput. NameField])>MaxPrintLine-2 THEN PrintLn [] ELSE IF( INT[TermOffset]>0)OR ( INT[FileOffset]>0) THEN PrintChar[32];PrintChar[40]; Print[CurInput.NameField];PascalTextBREAK[file: @TermOut];CurInput.StateField_33; IF CurInput.NameField=StrPtr-1 THEN BEGIN BEGIN StrPtr_StrPtr-1; PoolPtr_StrStart^[StrPtr]; END;CurInput.NameField_CurName; END; --538: BEGIN IF NOT InputLn[@InputFile^[CurInput.IndexField],FALSE] THEN NULL; FirmUpTheLine[]; IF(Eqtb^[4815].Int<0)OR (Eqtb^[4815].Int>127) THEN CurInput.LimitField_ INT[CurInput.LimitField]-1 ELSE Buffer^[CurInput.LimitField]_Eqtb^[4815]. Int;First_CurInput.LimitField+1; CurInput.LocField_CurInput.StartField;Line_1; END--:538--; END;--:537 CharWarning: PROCEDURE[F: InternalFontNumber,C: EightBits] = BEGIN IF Eqtb^[4802].Int>0 THEN BEGIN BeginDiagnostic[];PrintNl[682]; PrintAscii[C];Print[683];Print[FontName^[F]];PrintChar[33]; EndDiagnostic[FALSE]; END; END;--:581----582: NewCharacter: PROCEDURE[F: InternalFontNumber,C: EightBits] RETURNS[NewCharacterResult: Halfword] = BEGIN P:Halfword; {IF( INT[FontBc^[F]]<=C)AND ( INT[FontEc^[F]]>=C) THEN IF( INT[FontInfo^[ CharBase^[F]+C].Qqqq.B0]>0) THEN BEGIN P_GetAvail[];Mem[P]^.Hh.B0_F;Mem[P]^.Hh.B1_C; NewCharacterResult_P; GOTO Label10; END;CharWarning[F,C];NewCharacterResult_0;EXITS Label10 => NULL}; END; OpenFmtFile: PROCEDURE RETURNS[OpenFmtFileResult: PascalBoolean] = BEGIN J:PascalInteger[0..BufSize]; {{IF Buffer^[CurInput.LocField]=38 THEN BEGIN CurInput.LocField_ CurInput.LocField+1;J_CurInput.LocField;Buffer^[Last]_32; WHILE Buffer^[J]#32 DO J_J+1 ENDLOOP ; PackBufferedName[CurInput.LocField,J-1]; IF WOpenIn[@FmtFile] THEN BEGIN CurInput.LocField_J; GOTO Label40; END; PackDefaultArea[CurInput.LocField,J-1]; IF WOpenIn[@FmtFile] THEN BEGIN CurInput.LocField_J; GOTO Label40; END;{PascalWriteLongString[file: @TermOut, item: "Sorry, I can't find that format;"] ; PascalWriteLongString[file: @TermOut, item: " will try your default."]; PascalWriteLn[file: @TermOut]}; END;PackAllDefault[]; IF NOT WOpenIn[@FmtFile] THEN BEGIN {PascalWriteLongString[file: @TermOut, item: "I can't find your default format file!"]; PascalWriteLn[file: @TermOut]}; OpenFmtFileResult_FALSE; GOTO Label10; END;EXITS Label40 => NULL};OpenFmtFileResult_TRUE;EXITS Label10 => NULL}; END;--:524 END.