IMPLEMENTATION MODULE Universe;

(* This is the global editor definitions module. It contains configuration
constants and type definitions used by the entire editor *)

IMPORT Errors, Vdu, Characters, Interface,
       Memory, Buffers, Deletions, StringData,
       Fast, Windows, Display, Screen, Commands, List,
       Actions, Movements, Help, Execute, FileIO, Searches, DoSearch,
       InsertDelete, Odds, Sods, Compile, Devices
(* :*
       ,Describe, Oblist
*: *)
      ;

IMPORT Debug;

PROCEDURE Initialise;

   BEGIN

   (* The order of initialisation of the various modules is important *)

      Vdu.Initialise;
      Interface.Initialise;
      Characters.Initialise;
      Memory.Initialise;
      StringData.Initialise;
      Buffers.Initialise;
      Deletions.Initialise;

      Fast.Initialise;
      Screen.Initialise;
      Windows.Initialise;
      Display.Initialise;
      Commands.Initialise;
      Errors.Initialise; (* Must come after Display.Initialise *)
      List.Initialise;

      Actions.Initialise; (* Must preceed any of the other action modules *)
      Compile.Initialise;
      Odds.Initialise;
      Sods.Initialise;
      Movements.Initialise;
      Help.Initialise;
      Execute.Initialise;
      FileIO.Initialise;
      Searches.Initialise;
      DoSearch.Initialise;
      InsertDelete.Initialise;

      Devices.Initialise;

(* :*
      Describe.Initialise;
      Oblist.Initialise;
*: *)

  END Initialise;



PROCEDURE Terminate;

   BEGIN
      Vdu.Terminate;
      Characters.Terminate;
      Interface.Terminate;
      List.Terminate;
      Memory.Terminate;
      Buffers.Terminate;
      Deletions.Terminate;
      StringData.Terminate;
      Fast.Terminate;
      Screen.Terminate;
      Windows.Terminate;
      Display.Terminate;
      Commands.Terminate;
      Errors.Terminate;
      Actions.Terminate;
      Compile.Terminate;
      Odds.Terminate;
      Sods.Terminate;
      Movements.Terminate;
      Help.Terminate;
      Execute.Terminate;
      FileIO.Terminate;
      Searches.Terminate;
      DoSearch.Terminate;
      InsertDelete.Terminate;
      Devices.Terminate;
   END Terminate;


BEGIN
   Editing := TRUE;
   MarkerFlagByte := BYTE (0FFH);
   EndOfLineCh := BYTE (00AH);
   TabCh := BYTE (009H);
   EscapeCh := BYTE (0C4H);
   HelpCh := BYTE (0C5H);
   CatastrophyCh := BYTE (0C7H);
   Debugging := DebugSet {};
END Universe.

