program Example;

{==========================================================}
{                                                          }
{  program App                     12/11/2002              }
{                                                          }
{  Dokumentovany priklad				   }
{                                                          }
{  Hlavni program                                          }
{                                                          }
{  (C)2003, SofCon, Stresovicka 49, 160 00 Praha 6         }
{                                                          }
{                                                          }
{==========================================================}

{$I SETS.INC} { Nastaveni podmineneho prekladu }

uses
  Kernel,       { Jadro realneho casu                      }
  Tick,         { Obsluha preruseni od casovace            }
  uMenuIni;     { Proces menu                              }

var

  g_fStopFlag: Boolean; { Priznak pro ukonceni vsech procesu aplikace }

begin
  g_fStopFlag := False;

  InitTick;
  { Nastaveni uzivatelskeho preruseni od casovace na 10ms }
  SetTimeUser1( 0.01 {s} );

  { Spusteni hlavniho procesu }
  StartMain( 250, 0 );

  { Inicializace zasobniku pro preruseni }
  InitInterruptStack( 1, 4096 );

  { Zaveseni algoritmu prepinani procesu na preruseni casovace }
  StartTimeSlicing( 8 );

  {--------------------------------------------------------}
  { Spusteni procesu menu                                  }
  StartMenuProcess( g_fStopFlag );
  {--------------------------------------------------------}

  { Snizeni priority hlavniho procesu }
  SetPriority( 1, 254 );

  { Telo hlavniho procesu }
  repeat
    Kernel.Wait( 1 );
  until g_fStopFlag;

  Abort( '*' );

  { Ukonceni hlavniho procesu }
  TerminateMain;
end.
