-- TexError.mesa -- last written by Doug Wyatt, November 10, 1979 5:43 PM DIRECTORY TexErrorDefs: FROM "TexErrorDefs", TexIODefs: FROM "TexIODefs", TexMemDefs: FROM "TexMemDefs", TexStringDefs: FROM "TexStringDefs", TexSynDefs: FROM "TexSynDefs"; TexError: PROGRAM IMPORTS TexIODefs,TexMemDefs,TexStringDefs,TexSynDefs EXPORTS TexErrorDefs = BEGIN errString: STRING_NIL; errStream: TexStringDefs.StringHandle_NIL; EndOfTex: PUBLIC ERROR = CODE; Error: PUBLIC PROCEDURE[s: STRING] = BEGIN OPEN TexIODefs; c: CHARACTER; Cr; Ws["! "]; Ws[s]; Ws["."]; TexSynDefs.DumpContext; IF NOT pause THEN RETURN; DO Cr; Wc['^]; c_ReadChar[]; SELECT c FROM CR => RETURN; -- press on LF => BEGIN pause_FALSE; RETURN END; 'X,'x => BEGIN Ps["Type x again to exit:"]; c_ReadChar[]; SELECT c FROM 'X,'x => ERROR EndOfTex; ENDCASE; END; ENDCASE => Ps["Type to continue, to flash error messages, x or X to quit. "]; ENDLOOP; END; BackError: PUBLIC PROCEDURE[s: STRING] = BEGIN TexSynDefs.BackInput; Error[s]; END; pause: BOOLEAN_TRUE; PausingOnErrors: PUBLIC PROCEDURE[b: BOOLEAN] = BEGIN pause_b; END; BeginError: PUBLIC PROCEDURE = BEGIN TexIODefs.SetStream[errStream]; errStream.reset[errStream]; END; EndError: PUBLIC PROCEDURE RETURNS[STRING] = BEGIN TexIODefs.UseDisplay; RETURN[errString]; END; Confusion: PUBLIC SIGNAL = CODE; OverFlow: PUBLIC ERROR[s: STRING] = CODE; PageEndError: PUBLIC SIGNAL = CODE; -- initialization errString_TexMemDefs.AllocString[100]; errStream_TexStringDefs.CreateStringStream[errString]; END.