-- BasicControl.mesa -- edited by Brotz and Hilton, September 22, 1982 4:24 PM DIRECTORY BasicImpDefs, BasicOps, ImageDefs, IODefs, LaurelExecDefs, Real, TimeDefs, vmD: FROM "VirtualMgrDefs"; BasicControl: PROGRAM IMPORTS BasicImpDefs, ImageDefs, IODefs, LaurelExecDefs, Real, TimeDefs, vmD EXPORTS BasicImpDefs = BEGIN OPEN BasicImpDefs; isProgramLine: PUBLIC BOOLEAN; WriteHerald: PROCEDURE = BEGIN time: STRING _ [25]; TimeDefs.AppendDayTime[time, TimeDefs.UnpackDT[ImageDefs.BcdVersion[].time]]; IODefs.WriteLine[""L]; IODefs.WriteString["Laurel Basic of "L]; IODefs.WriteLine[time]; IODefs.WriteLine["(CTRL DEL interrupts execution. Type HELP for information.)"L]; IODefs.WriteLine[""]; END; -- of WriteHerald -- -- M A I N E X E C U T I O N START BasicScanner; START BasicProgram; START BasicVariable; START BasicCommand; START BasicInterpA; START BasicInterpB; START BasicParser; LaurelExecDefs.MakeMenuCommandCallable[newMail]; LaurelExecDefs.MakeMenuCommandCallable[user]; LaurelExecDefs.MakeMenuCommandCallable[mailFile]; LaurelExecDefs.MakeMenuCommandCallable[display]; LaurelExecDefs.MakeMenuCommandCallable[delete]; LaurelExecDefs.MakeMenuCommandCallable[undelete]; LaurelExecDefs.MakeMenuCommandCallable[moveTo]; LaurelExecDefs.MakeMenuCommandCallable[copy]; WriteHerald[]; Real.InitReals[]; InitCharTable[]; InitBuiltInFunctionRegistry[]; DO savedIndex, programLineNumber: CARDINAL; IF autoOn THEN OutputAutoLineNumber[]; IODefs.ReadLine[inputLine ! IODefs.Rubout => {IODefs.WriteLine[" XXX"L]; LOOP}]; inputLineIndex _ 0; IF GetToken[] THEN BEGIN savedIndex _ inputLineIndex; [isProgramLine, programLineNumber] _ TokenIsLineNumber[]; vmD.InitComposedMessage[lineCodeCm, ""L]; IF isProgramLine THEN [] _ GetToken[] ELSE savedIndex _ 0; ParseStatement[savedIndex ! ParseErrorSignal => LOOP]; AppendByte[lineCodeCm, BasicOps.Done]; IF isProgramLine THEN BEGIN AllocateAndInsert[programLineNumber, savedIndex]; autoStart _ programLineNumber; END ELSE BEGIN autoOn _ FALSE; InterpretCode[lineCodeCm, 0 ! QuitSignal => EXIT; RunTimeErrorSignal, ParseErrorSignal => LOOP]; END; END; ENDLOOP; VariableCleanUp[]; CommandCleanUp[]; ProgramCleanUp[]; END. -- of BasicControl -- (635)\f1