[Back to MENU SWAG index]  [Back to Main SWAG index]  [Original]

{Menu pour le Multi-jeux # }

Program Game_Menu;
{$M $4000,0,0 }   { 16K stack, no heap }
Uses crt, dos, Printer;

const FormFeed = #12;
      PathLength  = 79;
{----------------------------------------------------------------------------}
  Name1 =''; Megs1 =0; Path1 ='';
  Txt_file1 =''; Run_file1 ='';
  Destination_drive1 = #0 ; Destination_directory1 ='';
  OSystem1 ='Dos, Windows, Windows 95'; Modification_file1 ='';
{----------------------------------------------------------------------------}
  Name2 =''; Megs2 =0; Path2 ='';
  Txt_file2 =''; Run_file2 ='';
  Destination_drive2 = #0; Destination_directory2 = '';
  OSystem2 ='Dos, Windows, Windows 95'; Modification_file2 ='';
{----------------------------------------------------------------------------}
  Name3 =''; Megs3 =0; Path3 ='';
  Txt_file3 =''; Run_file3 ='';
  Destination_drive3 = #0 ; Destination_directory3 = '';
  OSystem3 ='Dos, Windows, Windows 95'; Modification_file3 ='';
{----------------------------------------------------------------------------}
  Name4 =''; Megs4 =0; Path4 ='';
  Txt_file4 =''; Run_file4 ='';
  Destination_drive4 = #0; Destination_directory4 = '';
  OSystem4 ='Dos, Windows, Windows 95'; Modification_file4 ='';
{----------------------------------------------------------------------------}
  Name5 =''; Megs5 =0; Path5 ='';
  Txt_file5 =''; Run_file5 ='';
  Destination_drive5 = #0; Destination_directory5 = '';
  OSystem5 ='Dos, Windows, Windows 95'; Modification_file5 ='';
{----------------------------------------------------------------------------}
  Name6 =''; Megs6 =0; Path6 ='';
  Txt_file6 =''; Run_file6 ='';
  Destination_drive6 = #0; Destination_directory6 = '';
  OSystem6 ='Dos, Windows, Windows 95'; Modification_file6 ='';
{----------------------------------------------------------------------------}
  Name7 =''; Megs7 =0; Path7 ='';
  Txt_file7 =''; Run_file7 ='';
  Destination_drive7 = #0; Destination_directory7 = '';
  OSystem7 ='Dos, Windows, Windows 95'; Modification_file7 ='';
{----------------------------------------------------------------------------}
  Name8 =''; Megs8 =0; Path8 ='';
  Txt_file8 =''; Run_file8 ='';
  Destination_drive8 = #0; Destination_directory8 = '';
  OSystem8 ='Dos, Windows, Windows 95'; Modification_file8 ='';
{----------------------------------------------------------------------------}
  Name9 =''; Megs9 =0; Path9 ='';
  Txt_file9 =''; Run_file9 ='';
  Destination_drive9 = #0; Destination_directory9 = '';
  OSystem9 ='Dos, Windows, Windows 95'; Modification_file9 ='';
{----------------------------------------------------------------------------}
  Name10=''; Megs10=0; Path10='';
  Txt_file10=''; Run_file10='';
  Destination_drive10= #0; Destination_directory10= '';
  OSystem10='Dos, Windows, Windows 95'; Modification_file10='';
{----------------------------------------------------------------------------}
  Name11=''; Megs11=0; Path11='';
  Txt_file11=''; Run_file11='';
  Destination_drive11= #0; Destination_directory11= '';
  OSystem11='Dos, Windows, Windows 95'; Modification_file11='';
{----------------------------------------------------------------------------}
  Name12=''; Megs12=0; Path12='';
  Txt_file12=''; Run_file12='';
  Destination_drive12= #0; Destination_directory12= '';
  OSystem12='Dos, Windows, Windows 95'; Modification_file12='';
{----------------------------------------------------------------------------}
  Name13=''; Megs13=0; Path13='';
  Txt_file13=''; Run_file13='';
  Destination_drive13= #0; Destination_directory13= '';
  OSystem13='Dos, Windows, Windows 95'; Modification_file13='';
{----------------------------------------------------------------------------}
  Name14=''; Megs14=0; Path14='';
  Txt_file14=''; Run_file14='';
  Destination_drive14= #0; Destination_directory14= '';
  OSystem14='Dos, Windows, Windows 95'; Modification_file14='';
{----------------------------------------------------------------------------}
  Name15=''; Megs15=0; Path15='';
  Txt_file15=''; Run_file15='';
  Destination_drive15= #0; Destination_directory15= '';
  OSystem15='Dos, Windows, Windows 95'; Modification_file15='';
{----------------------------------------------------------------------------}
  Name16=''; Megs16=0; Path16='';
  Txt_file16=''; Run_file16='';
  Destination_drive16= #0; Destination_directory16= '';
  OSystem16='Dos, Windows, Windows 95'; Modification_file16='';
{----------------------------------------------------------------------------}
  Name17=''; Megs17=0; Path17='';
  Txt_file17=''; Run_file17='';
  Destination_drive17= #0; Destination_directory17='';
  OSystem17='Dos, Windows, Windows 95'; Modification_file17='';
{----------------------------------------------------------------------------}
  Name18=''; Megs18=0; Path18='';
  Txt_file18=''; Run_file18='';
  Destination_drive18= #0; Destination_directory18='';
  OSystem18='Dos, Windows, Windows 95'; Modification_file18='';
{----------------------------------------------------------------------------}
  Name19=''; Megs19=0; Path19='';
  Txt_file19=''; Run_file19='';
  Destination_drive19= #0; Destination_directory19='';
  OSystem19='Dos, Windows, Windows 95'; Modification_file19='';
{----------------------------------------------------------------------------}
  Name20=''; Megs20=0; Path20='';
  Txt_file20=''; Run_file20='';
  Destination_drive20= #0; Destination_directory20= '';
  OSystem20='Dos, Windows, Windows 95'; Modification_file20='';
{----------------------------------------------------------------------------}
  Name21=''; Megs21=0; Path21='';
  Txt_file21=''; Run_file21='';
  Destination_drive21= #0; Destination_directory21= '';
  OSystem21='Dos, Windows, Windows 95'; Modification_file21='';
{----------------------------------------------------------------------------}
  Name22=''; Megs22=0; Path22='';
  Txt_file22=''; Run_file22='';
  Destination_drive22= #0; Destination_directory22= '';
  OSystem22='Dos, Windows, Windows 95'; Modification_file22='';
{----------------------------------------------------------------------------}
  Name23=''; Megs23=0; Path23='';
  Txt_file23=''; Run_file23='';
  Destination_drive23= #0; Destination_directory23= '';
  OSystem23='Dos, Windows, Windows 95'; Modification_file23='';
{----------------------------------------------------------------------------}
  Name24=''; Megs24=0; Path24='';
  Txt_file24=''; Run_file24='';
  Destination_drive24= #0; Destination_directory24= '';
  OSystem24='Dos, Windows, Windows 95'; Modification_file24='';
{----------------------------------------------------------------------------}
  Name25=''; Megs25=0; Path25='';
  Txt_file25=''; Run_file25='';
  Destination_drive25= #0; Destination_directory25= '';
  OSystem25='Dos, Windows, Windows 95'; Modification_file25='';
{----------------------------------------------------------------------------}
  Name26=''; Megs26=0; Path26='';
  Txt_file26=''; Run_file26='';
  Destination_drive26= #0; Destination_directory26= '';
  OSystem26='Dos, Windows, Windows 95'; Modification_file26='';
{----------------------------------------------------------------------------}
  Name27=''; Megs27=0; Path27='';
  Txt_file27=''; Run_file27='';
  Destination_drive27= #0; Destination_directory27= '';
  OSystem27='Dos, Windows, Windows 95'; Modification_file27='';
{----------------------------------------------------------------------------}
  Name28=''; Megs28=0; Path28='';
  Txt_file28=''; Run_file28='';
  Destination_drive28= #0; Destination_directory28= '';
  OSystem28='Dos, Windows, Windows 95'; Modification_file28='';
{----------------------------------------------------------------------------}
  Name29=''; Megs29=0; Path29='';
  Txt_file29=''; Run_file29='';
  Destination_drive29= #0; Destination_directory29= '';
  OSystem29='Dos, Windows, Windows 95'; Modification_file29='';
{----------------------------------------------------------------------------}
  Name30=''; Megs30=0; Path30='';
  Txt_file30=''; Run_file30='';
  Destination_drive30= #0; Destination_directory30= '';
  OSystem30='Dos, Windows, Windows 95'; Modification_file30='';
{----------------------------------------------------------------------------}
  Name31=''; Megs31=0; Path31='';
  Txt_file31=''; Run_file31='';
  Destination_drive31= #0; Destination_directory31= '';
  OSystem31='Dos, Windows, Windows 95'; Modification_file31='';
{----------------------------------------------------------------------------}
  Name32=''; Megs32=0; Path32='';
  Txt_file32=''; Run_file32='';
  Destination_drive32= #0; Destination_directory32= '';
  OSystem32='Dos, Windows, Windows 95'; Modification_file32='';
{----------------------------------------------------------------------------}
  Name33=''; Megs33=0; Path33='';
  Txt_file33=''; Run_file33='';
  Destination_drive33= #0; Destination_directory33= '';
  OSystem33='Dos, Windows, Windows 95'; Modification_file33='';
{----------------------------------------------------------------------------}
  Name34=''; Megs34=0; Path34='';
  Txt_file34=''; Run_file34='';
  Destination_drive34= #0; Destination_directory34= '';
  OSystem34='Dos, Windows, Windows 95'; Modification_file34='';
{----------------------------------------------------------------------------}
  Name35=''; Megs35=0; Path35='';
  Txt_file35=''; Run_file35='';
  Destination_drive35= #0; Destination_directory35= '';
  OSystem35='Dos, Windows, Windows 95'; Modification_file35='';
{----------------------------------------------------------------------------}
  Name36=''; Megs36=0; Path36='';
  Txt_file36=''; Run_file36='';
  Destination_drive36= #0; Destination_directory36= '';
  OSystem36='Dos, Windows, Windows 95'; Modification_file36='' ;
{----------------------------------------------------------------------------}
  Name37=''; Megs37=0; Path37='';
  Txt_file37=''; Run_file37='';
  Destination_drive37= #0; Destination_directory37= '';
  OSystem37='Dos, Windows, Windows 95'; Modification_file37='';
{----------------------------------------------------------------------------}
  Name38=''; Megs38=0; Path38='';
  Txt_file38=''; Run_file38='';
  Destination_drive38= #0; Destination_directory38= '';
  OSystem38='Dos, Windows, Windows 95'; Modification_file38='';
{----------------------------------------------------------------------------}
  Name39=''; Megs39=0; Path39='';
  Txt_file39=''; Run_file39='';
  Destination_drive39= #0; Destination_directory39= '';
  OSystem39='Dos, Windows, Windows 95'; Modification_file39='';
{----------------------------------------------------------------------------}
  Name40=''; Megs40=0; Path40='';
  Txt_file40=''; Run_file40='';
  Destination_drive40= #0; Destination_directory40= '';
  OSystem40='Dos, Windows, Windows 95'; Modification_file40='';
{----------------------------------------------------------------------------}
Type  FileName  = string[PathLength];

VAR  Name : String[30];
     Megs : integer;
     Path : Filename;
     Txt_file : String[12];
     Run_file : String[12];
     OSystem : String[30];
     Source_drive : Char;
     Destination_drive : Char;
     Destination_drive_Access : Boolean;
     Destination_directory_Access : Boolean;
     Destination_directory : String;
     Modification_file : String[12];
     SpaceDisk : LongInt;
     PathFileName: FileName;
     ProgramCommandCom : String;
     ProgramName, CmdLine: string;
     Fichier : Text;
     Source: PathStr;
     Choice : integer;
     Cnt : integer;
     I, J, K : integer;
     Ch, Choix : Char;
     IOError : integer;
     Quit : Boolean;
     Erreur : Boolean;
     Touche_F1 : Boolean;
     Touche_tab : Boolean;
     Touche_Esc : Boolean;
     Touche_Bas : Boolean;
     Touche_haut : Boolean;
     Touche_insert : boolean;
{----------------------------------------------------------------------------}
Procedure CursorInsert;     { Curseur form‚ de 7 lignes(de pixels)#1 }
  VAR
    Regs : registers;
  BEGIN
      { Code d'interruption pour indiquer changement de curseur }
      regs.AH:=$01;
      regs.CH:=$0;  { CH (High): haut du curseur, ligne (de pixels) #0 }
      regs.CL:=$7;  { CL (Low): bas du curseur, ligne (de pixels) #7 }
      { Interruption niveau machine #10 pour changer le curseur }
      intr($10,Regs);
  END;
{----------------------------------------------------------------------------}
Procedure Normalcursor;     { Curseur form‚ de 2 lignes(de pixels)#6 }
  VAR
    Regs : registers;
  BEGIN
      { Code d'interruption pour indiquer changement de curseur }
      regs.AH:=$01;
      regs.CH:=$6;  { CH (High): haut du curseur, ligne (de pixels) #6 }
      regs.CL:=$7;  { CL (Low): bas du curseur, ligne (de pixels) #7 }
      { Interruption niveau machine #10 pour changer le curseur }
      intr($10,Regs);
  END;
{----------------------------------------------------------------------------}
Procedure Effacecursor;         { Pour effacer le curseur }
  VAR
    Regs : registers;
  BEGIN
      { Code d'interruption pour indiquer changement de curseur }
      regs.AH:=$01;
      regs.CH:=$20;  { Valeur nulle }
      regs.CL:=$20;  { Valeur nulle }
      { Interruption niveau machine #10 pour changer le curseur }
      intr($10,Regs);
  END;
{----------------------------------------------------------------------------}
Procedure fin (Erreur:Boolean);         { Quitte le programme principal }

  Begin  { Procedure Fin }
    Window (1, 1, 80, 25);      {Cr‚ation de fenetre (1, 1) … (80, 25)}
    Textcolor (7);              {Couleur du texte … la sortie Lightgray}
    TextBackground (0);         {Couleur du background black}
    ClrScr;                     { Pour effacer l'‚cran }
    NormalCursor;
    Gotoxy(3,2); Writeln('Thank you to choose The CD-ROM Master''s');
    Halt(1)
  End;  { Procedure Fin }
{----------------------------------------------------------------------------}
Procedure BoitePourQuitter(Var ChoixMenuPrecedent : Char);
 Begin
   EffaceCursor;
   Window (32, 20, 73, 20);    {Cr‚ation de fenetre (28, 5) … (74, 6)}
   Textbackground (1);       { Couleur de la boite bleu }
   Clrscr;                      { Pour effacer l'‚cran }
   TextColor (15);                  { Couleur du texte blanc }
   Write ('Do you really want to Quit? (Y)es or (N)o');
   Textcolor (14);                    {Couleur des r‚ponses yellow}
   Gotoxy (30, 1);   Write ('Y');
   Gotoxy (39, 1);   Write ('N');
   Repeat
     ChoixMenuPrecedent := Readkey;
   Until (Upcase(ChoixMenuPrecedent) = char(78)) or
         (Upcase(ChoixMenuPrecedent) = char(89));
   Clrscr;
   Choix := ChoixMenuPrecedent;
   NormalCursor;
 end;
{----------------------------------------------------------------------------}
Procedure DessineBoite
     (x1,y1,x2,y2,Background:integer ;
      LigneContour:Boolean ; LigneContourGauche,LigneContourDroite:integer ;
       Shadow:Boolean ; ShadowBackgroundDroite,ShadowBackgroundBas:integer);
Begin
  Window (x1,y1,x2,y2);
  TextBackground (Background);
  ClrScr;
  Window (x1,y1,x2+1,y2+1);

  If LigneContour = true then
  Begin
    TextColor (LigneContourDroite);
    Gotoxy(1,1); Write('Ú');
    For I := 2 to (x2-x1) do
    Begin Gotoxy(I,1); Write('Ä'); end;
    Writeln;
    For J := 2 to (y2-y1) do
    Begin Gotoxy(1,J); Write('³'); end;
    Writeln;
    Gotoxy(1,y2-y1+1); Write('À');
    TextColor (LigneContourGauche);
    Gotoxy(x2-x1+1,1); Write('¿');
    For J := 2 to (y2-y1) do
    Begin Gotoxy(x2-x1+1,J); Write('³'); end;
    Writeln;
    For I := 2 to (x2-x1) do
    Begin Gotoxy(I,y2-y1+1); Write('Ä'); end;
    Writeln;
    Gotoxy(x2-x1+1,y2-y1+1); Write('Ù');
  end;

  If Shadow = true then
  Begin
    Window (x1,y1,x2+2,y2+1);
    TextColor (0);
    TextBackground(ShadowBackgroundDroite);
    Gotoxy (x2-x1+2,1); Write ('Ü');
    For J := 2 to (y2-y1+1) do
    Begin Gotoxy(x2-x1+2,J); Write ('Û'); end;
    TextBackground(ShadowBackgroundBas);
    For I := 2 to (x2-x1+2) do
    Begin Gotoxy(I,y2-y1+2); Write ('ß'); end;
  end;
end;
{----------------------------------------------------------------------------}
Procedure Read_Char(x1,y1,x2,y2,Background:integer;KindData:String);
Label Escape, Fleche_bas, Fleche_haut, Tabulation,
      En_attente_de_commande;

Begin
Touche_tab := False;
Touche_Esc := False;
Touche_bas := False;
Touche_haut := False;
Goto En_attente_de_commande;

Escape :
  Begin Touche_Esc := true; exit; end;

Fleche_bas :
  Begin Touche_bas := true; exit; end;

Fleche_haut :
  Begin Touche_haut := true; exit; end;

Tabulation :
  Begin Touche_tab := true; exit; end;

En_attente_de_commande:
  Begin
    Repeat
      TextColor(14);
      Window (x1,y1,x2,y2);
      Textbackground (Background);
      ClrScr;                          { Pour effacer l'‚cran }
      K := 1;
      If (KindData='Letter') then
      Begin Repeat
              If (K=3) then K:=1;
              choix := Readkey;
              If Choix = char(27) then goto Escape
              Else If Choix = char(9) then goto Tabulation
              Else If Choix = char(0) then
              Begin
                Choix := Readkey;
                If Choix = char(80) then goto Fleche_bas
                Else If Choix = char(72) then goto Fleche_haut
                Else inc(K);
              end;
              If (K=2) and (Upcase(Choix) in ['A'..'Z']) then inc(K);
            Until (Upcase(Choix) in ['A'..'Z']) and (K=1); end

      Else If (KindData='Number') then
                Begin Repeat
                        If (K=3) then K:=1;
                        choix := Readkey;
                        If Choix = char(27) then goto Escape;
                        If Choix = Char(0) then inc(K);
                        If (K=2) and (Upcase(Choix) in ['A'..'Z']) then inc(K);
                      Until (Upcase(Choix) in ['1'..'9']) and (K=1) ; end
      Else If (KindData='All') then
                Begin Repeat
                        If (K=3) then K:=1;
                        choix := Readkey;
                        If Choix = char(27) then goto Escape;
                        If Choix = Char(0) then inc(K);
                        If (K=2) and (Upcase(Choix) in ['A'..'Z']) then inc(K);
                      Until (Upcase(Choix) in ['1'..'9']) or
                            (Upcase(Choix) in ['A'..'Z']) and (K=1); end;
      Write (Upcase(Choix));
      ch := Readkey;
      If (ch=Char(0)) then ch:=Readkey;
    Until (ch = char(13));
  end;
end;
{----------------------------------------------------------------------------}
Procedure Read_integer (Var NumdataFinal:Integer);
Label Backspace, Effacement, Escape, Fleche_droite, Fleche_gauche,
      Insertion, Key_F1, Tabulation, En_attente_de_commande;


Const Base = 10;
      Sentinel = char(13);
var Touche : char;
    Digit : integer;
    NumData : integer;
    Position : integer;
    String_data : String;
    Fleche_active : Boolean;

Begin
   I := 1;
   Digit := 0;
   Numdata := 0;
   String_data := '';
   Touche_F1 := False;
   Touche_Esc := False;
   Fleche_active := false;
   Goto En_attente_de_commande;

   Backspace :
     Begin
       If Fleche_active = true then
       Begin
         Delete(String_data,I-1,1);
         Gotoxy((I-1),1);
         For Position := (I-1) to Length(String_data) do
         Begin Write(String_data[Position]) end;
         Write(' '); Gotoxy((I-1),1); Dec(I);
       end
       Else If I >= 2 then
            Begin
              Delete(String_data,I-1,1);
              Gotoxy(I-1,1); Write(char(0));
              Gotoxy(I-1,1); Dec(I);
            end;
       goto En_attente_de_commande;
     end;

   Effacement :
     Begin
         Delete(String_data,I,1);
         For Position := I to Length(String_data) do
         Begin Write(String_data[Position]) end;
         Write(' '); Gotoxy(I,1);
         goto En_attente_de_commande
       end;

   Escape :
     Begin Touche_Esc := true; exit; end;

   Fleche_droite :
     Begin
       Fleche_active := True;
       If I <= Length(String_data) then
       Begin Gotoxy(I+1,1); Inc(I); end;
       goto En_attente_de_commande
     end;

   Fleche_gauche :
     Begin
       Fleche_active := True;
       If I > 1 then
       Begin Gotoxy(I-1,1); Dec(I); end;
       goto En_attente_de_commande
     end;

   Insertion :
     Begin
       If Touche_insert = False then
       Begin touche_insert := true; CursorInsert; end
       Else If Touche_insert = true then
       Begin touche_insert := false; Normalcursor; end;
       goto En_attente_de_commande
     end;

   Key_F1 :
     Begin Touche_F1 := true ; exit; end;

   En_attente_de_commande :
   Begin
     Repeat
     Touche := Readkey;
     ch := Touche;
     If (I > Length(String_data)) then Fleche_active := false;
     If ((Touche >= '0') and (Touche <= '9')) then
     Begin
       If ((Touche_insert = True) and (Fleche_active = True)) then
       Begin
         Insert(Touche,String_data,I);
         For Position := I to Length(String_data) do
         Begin Write(String_data[Position]) end;
         Gotoxy(I+1,1); Inc(I);
       end
       Else If ((Touche_insert = False) or (Fleche_active = false)) then
            Begin
              String_data[I] := Touche;
              If Fleche_active = false then String_data := String_data + String_data[I];
              Write(String_data[I]);
              Inc(I);
            end;
     end
     Else If ch = char(27) then goto Escape
     Else If ch = char(8) then goto Backspace
     Else If ch = char(0) then
          Begin
            ch := Readkey;
                 If ch = char(75) then goto Fleche_gauche
            Else If ch = char(59) then goto Key_F1
            Else If ch = char(77) then goto Fleche_droite
            Else If ch = char(83) then goto Effacement
            Else If ch = char(82) then goto Insertion
          end;
     Until (ch = Sentinel);
     For Position := 1 to Length(String_data) do
     Begin
       Digit := ORD(String_data[Position]) - ORD('0');
       Numdata := base * Numdata + Digit;
     end;
   end;
   NumDataFinal := Numdata;
 End;
{----------------------------------------------------------------------------}
Procedure Read_string (Var RepFinal:String);
Label Backspace, Effacement, Escape, Fleche_droite, Fleche_gauche, Fleche_bas,
      Fleche_haut, Insertion, Key_F1, Tabulation, En_attente_de_commande;

Const Sentinel = char(13);
var Rep : String;
    Touche : char;
    Position : integer;
    Fleche_active : Boolean;

Begin
   I := 1;
   Rep := '';
   Touche_tab := False;
   Touche_Esc := False;
   Touche_bas := False;
   Touche_haut := False;
   Fleche_active := false;
   Goto En_attente_de_commande;

   Backspace :
     Begin
       If Fleche_active = true then
       Begin
         Delete(Rep,I-1,1);
         Gotoxy((I-1),1);
         For Position := (I-1) to Length(Rep) do
         Begin Write(Rep[Position]) end;
         Write(' '); Gotoxy((I-1),1); Dec(I);
       end
       Else If I >= 2 then
            Begin
              Delete(Rep,I-1,1);
              Gotoxy(I-1,1); Write(char(0));
              Gotoxy(I-1,1); Dec(I);
            end;
       goto En_attente_de_commande;
     end;

   Effacement :
     Begin
         Delete(Rep,I,1);
         For Position := I to Length(Rep) do
         Begin Write(Rep[Position]) end;
         Write(' '); Gotoxy(I,1);
         goto En_attente_de_commande
       end;

   Escape :
     Begin Touche_Esc := true; exit; end;

   Fleche_bas :
     Begin Touche_bas := true; exit; end;

   Fleche_haut :
     Begin Touche_haut := true; exit; end;

   Fleche_droite :
     Begin
       Fleche_active := True;
       If I <= Length(Rep) then
       Begin Gotoxy(I+1,1); Inc(I); end;
       goto En_attente_de_commande
     end;

   Fleche_gauche :
     Begin
       Fleche_active := True;
       If I > 1 then
       Begin Gotoxy(I-1,1); Dec(I); end;
       goto En_attente_de_commande
     end;

   Insertion :
     Begin
       If Touche_insert = False then
       Begin touche_insert := true; CursorInsert; end
       Else If Touche_insert = true then
       Begin touche_insert := false; Normalcursor; end;
       goto En_attente_de_commande
     end;

   Tabulation :
     Begin Touche_tab := true; exit; end;

   En_attente_de_commande :
   Begin
     Repeat
     Touche := Readkey;
     ch := Touche;
     If (I > Length(Rep)) then Fleche_active := false;
     If ((Touche >= char(32)) and (Touche <= char(255))) then
     Begin
       If ((Touche_insert = True) and (Fleche_active = True)) then
       Begin
         Insert(Touche,Rep,I);
         For Position := I to Length(Rep) do
         Begin Write(Rep[Position]) end;
         Gotoxy(I+1,1); Inc(I);
       end
       Else If ((Touche_insert = False) or (Fleche_active = false)) then
            Begin
              Rep[I] := Touche;
              If Fleche_active = false then Rep := Rep + Rep[I];
              Write(Rep[I]);
              Inc(I);
            end;
     end
     Else If ch = char(27) then goto Escape
     Else If ch = char(8) then goto Backspace
     Else If ch = char(9) then goto Tabulation
     Else If ch = char(0) then
          Begin
            ch := Readkey;
                 If ch = char(75) then goto Fleche_gauche
            Else If ch = char(77) then goto Fleche_droite
            Else If ch = char(83) then goto Effacement
            Else If ch = char(82) then goto Insertion
            Else If ch = char(80) then goto Fleche_bas
            Else If ch = char(72) then goto Fleche_haut
          end;
     Until (ch = Sentinel);
   end;
   RepFinal := Rep;
 End;
{---------------------------------------------------------------------------}
Procedure Centrer(Phrase:String ; x1,x2,Ligne:integer);
Begin
  Gotoxy(2,Ligne);
  For I := 1 to (((x2-x1)-Length(Phrase)) div 2) do Write (' ');
  Write(Phrase);
end;
{----------------------------------------------------------------------------}
Procedure Message_erreur (Message:integer;CouleurFond:integer);
Var DosError_Message : String[80];
    IOResult_Message : String[80];
Begin
  EffaceCursor;
  DessineBoite(9,7,72,19,4,true,0,12,True,CouleurFond,CouleurFond);
  DessineBoite(12,8,69,10,4,true,12,0,False,12,12);
  TextColor (14); Centrer('Errors Messages',12,69,2);
  DessineBoite(12,11,69,18,4,true,12,0,False,12,12);
  TextColor (15);
  Case Message of
  1: Begin
  Case DosError of
     2 : DosError_Message := 'File not found';
     3 : DosError_Message := 'Path not found';
     5 : DosError_Message := 'Access denied';
     6 : DosError_Message := 'Invalid handle';
     8 : DosError_Message := 'Not enough memory';
    10 : DosError_Message := 'Invalid environment';
    11 : DosError_Message := 'Invalid format';
    18 : DosError_Message := 'No more files';
  end;
       Gotoxy(22,3);
       Write('Dos Error number: ', DosError);
       Centrer(DosError_Message,12,69,4);
       DosError:=0;
     end;

  2: Begin
  Case IOError of
     1 : IOResult_message := 'Invalid function number';
     2 : IOResult_message := 'File not found';
     3 : IOResult_message := 'Path not found';
     4 : IOResult_message := 'Too many open files';
     5 : IOResult_message := 'File access denied';
     6 : IOResult_message := 'Invalid file handle';
    12 : IOResult_message := 'Invalid file access code';
    15 : IOResult_message := 'Invalid drive number';
    16 : IOResult_message := 'Cannot remove current directory';
    17 : IOResult_message := 'Cannot rename across drives';
    18 : IOResult_message := 'No more files';
   100 : IOResult_message := 'Disk read error';
   101 : IOResult_message := 'Disk write error';
   102 : IOResult_message := 'File not assigned';
   103 : IOResult_message := 'File not open';
   104 : IOResult_message := 'File not open for input';
   105 : IOResult_message := 'File not open for output';
   106 : IOResult_message := 'Invalid numeric format';
   150 : IOResult_message := 'Disk is write-protected';
   151 : IOResult_message := 'Bad drive request struct length';
   152 : IOResult_message := 'Drive not ready';
   154 : IOResult_message := 'CRC error in data';
   156 : IOResult_message := 'Disk seek error';
   157 : IOResult_message := 'Unknown media type';
   158 : IOResult_message := 'Sector Not Found';
   159 : IOResult_message := 'Printer out of paper';
   160 : IOResult_message := 'Device write fault (Printer may be off-line!)';
   161 : IOResult_message := 'Device read fault';
   162 : IOResult_message := 'Hardware failure';
   200 : IOResult_message := 'Division by zero';
   201 : IOResult_message := 'Range check error';
   202 : IOResult_message := 'Stack overflow error';
   203 : IOResult_message := 'Heap overflow error';
   204 : IOResult_message := 'Invalid pointer operation';
   205 : IOResult_message := 'Floating point overflow';
   206 : IOResult_message := 'Floating point underflow';
   207 : IOResult_message := 'Invalid floating point operation';
   208 : IOResult_message := 'Overlay manager not installed';
   209 : IOResult_message := 'Overlay file read error';
   210 : IOResult_message := 'Object not initialized';
   211 : IOResult_message := 'Call to abstract method';
   212 : IOResult_message := 'Stream registration error';
   213 : IOResult_message := 'Collection index out of range';
   214 : IOResult_message := 'Collection overflow error';
   215 : IOResult_message := 'Arithmetic overflow error';
   216 : IOResult_message := 'General Protection fault';
  end;
       Gotoxy(20,3);
       Write('IO Error number: ', IOError);
       Centrer(IOResult_message,12,69,4);
     end;

  3: Begin
       Centrer('You don''t have enough free space on drive "'+Destination_Drive+'"',12,69,3);
     end;

  4: Begin
       Centrer('Please enter the source drive.',12,69,3);
     end;
  5: Begin
       Centrer('Please Enter the destination drive',12,69,3);
     end;
  6: Begin
       Centrer('Please enter the destination directory',12,69,3);
     end; end;

  TextColor (15);

  Centrer ('Press <Enter> to continue!',12,69,7);
  Readln;
 end;
{----------------------------------------------------------------------------}
Procedure Barre_menu_bas(Ecran:String; Couleur:integer);
Begin
  Window (1, 25, 80, 25);
  Textbackground (Couleur);
  Clrscr;
  If (Ecran = 'Principal') then
     Begin
       TextColor(15);
       Gotoxy(51,1); Write ('Made by: ');
       TextColor(14);
       Gotoxy(60,1); Write ('The CD-ROM Master''s');

       TextColor(15);
       Gotoxy(3,1); Write ('  : More games');
       TextColor(14);
       Gotoxy(3,1); Write ('F1');

       TextColor(15);
       Gotoxy(20,1); Write ('   : Quit');
       TextColor(14);
       Gotoxy(20,1); Write ('ESC');
     end
  Else Begin
         TextColor(15);
         Gotoxy(68,1); Write ('   : Cancel');
         TextColor(14);
         Gotoxy(68,1); Write ('ESC');
       end;
end;
{----------------------------------------------------------------------------}
Procedure BackGroundPrincipal(Couleur : integer);
Begin
  Window (1, 1, 80, 25);
  Textbackground (7);
  Clrscr;

  Window (1, 1, 80, 1);
  Textbackground (Couleur);
  Clrscr;
  TextColor(15);
  Centrer('Installation menu for the Multi-Jeux Tome  ',1,80,1);
end;
{----------------------------------------------------------------------------}
 Function Open(PathFileName:FileName;CouleurFond:integer): boolean;
 var fp : Text;
 begin
   {$I-}
   Assign(fp,PathFileName);
   Reset(fp);
   IOError := IOResult;
   {$I+}
   IF IOError <> 0 then Begin Open:=False; Message_Erreur(2,CouleurFond); end
   Else Begin Open:=True; Close(fp); end;
 end { Open };
{----------------------------------------------------------------------------}
Procedure Message_Traitement(PathFileName:FileName);
Begin
  EffaceCursor;
  BackGroundPrincipal(1);
  DessineBoite(9,7,72,19,1,true,0,9,True,7,7);
  DessineBoite(12,8,69,10,1,true,9,0,False,9,9);
  TextColor (14); Gotoxy (22,2);
  Write ('Status Information');
  DessineBoite(12,11,69,18,1,true,9,0,False,9,9);
  TextColor (15); Centrer('Applying modification',12,69,2);
  TextColor(14);  Centrer(PathFileName,12,69,3);
  TextColor (15) ; Centrer('Please Wait',12,69,7);
  Delay(1500);
end;

{----------------------------------------------------------------------------}
Procedure Modification_Ds_Fichier(PathFileName:FileName;
                                  OriginalString, NewString : String);
Var Match : Boolean;
    ResetTab : Integer;
    OldFile : File of Char;
    NewFile : File of Char;
    StringReadLine : String;
    TabReadLine : Array [1..255] of Char;
    Path : DirStr;
    FileName : NameStr;
    Extension : ExtStr;

Begin
  Assign(OldFile,PathFileName);
  Message_Traitement(PathFileName);
  If (open(PathFileName,7)) then
  Begin
    Fsplit(PathFileName,Path,FileName,Extension);
    Assign(NewFile,Path+FileName+'.TMP');
    Rewrite(NewFile);
    Reset(OldFile);
    While not EOF(OldFile) do
    Begin
      For ResetTab:= 1 to 255 do TabReadLine[ResetTab]:=#0;
      I:=1;
      Repeat
        Read(OldFile, ch);
        TabReadLine[I]:=ch;
        inc(I);
      until (ch=Char(10)) or EOF(OldFile);
      StringReadLine:=TabReadLine;
      For J := 1 to I do
      Begin
        If Upcase(OriginalString[1])=Upcase(TabReadLine[J]) then
        Begin
          Inc(J);
          K:=2;
          Match := True;
          While Match and (K <= Length(OriginalString)) do
          Begin
            If Upcase(OriginalString[K])=Upcase(TabReadLine[J]) then
            Begin Inc(J); Inc(K); end
            Else Match:=False;
          end;
          If Match then
          Begin
            J := J-Length(OriginalString);
            Delete(StringReadLine,J,Length(OriginalString));
            Insert(NewString,StringReadLine,J);
            J := J+(Length(OriginalString)-1);
          end;
        end;
      end;
      K:=1;
      For ResetTab:= 1 to 255 do TabReadLine[ResetTab]:=#0;
      Repeat
        TabReadLine[K]:=StringReadLine[K];
        Inc(K);
      Until StringReadLine[K]=#0;
      I:=1;
      Repeat
        Write(NewFile,TabReadLine[I]);
        inc(I);
      until (TabReadLine[I]=#0);
    end;
  Close(OldFile);
  Close(NewFile);
  Rename(OldFile,Path+FileName+'.OLD');
  Rename(NewFile,PathFileName);
  Delay(1500);
  TextColor (15) ; Centrer('Press <Enter> to continue!',12,69,7);
  Readln;
  end;
end;
{----------------------------------------------------------------------------}
Procedure Manual_installation(TypeOfInstallation:integer);
Begin
  EffaceCursor;
  BackGroundPrincipal(1);
  DessineBoite(9,7,72,19,1,true,0,9,True,7,7);
  DessineBoite(12,8,69,10,1,true,9,0,False,1,1);
  TextColor (14);
  Centrer('Special installation',12,69,2);
  DessineBoite(12,11,69,18,1,true,9,0,False,1,1);
  TextColor (15); Centrer('Please start in '+OSystem,12,69,3);
  If (TypeOfInstallation=1) then Begin
  TextColor(14);  Centrer(Source_drive+':\'+Path+'\'+Run_file,12,69,4); end
  Else Begin
   TextColor(14);
   Centrer(Destination_drive+':\'+Destination_directory+'\'+Run_file,12,69,4);
       end;
  TextColor (15) ; Centrer('Press <Enter> to continue!',12,69,7);
  Readln;
end;
{----------------------------------------------------------------------------}
Procedure ExecuteExec(ProgramName,CmdLine:String);
  Begin
    BackGroundPrincipal(1);
    Window(1,2,80,25); TextBackGround(0); TextColor(7); ClrScr;
    SwapVectors;
    ChDir(Source_drive+':\'+Path);
    Exec(ProgramName,CmdLine);
    SwapVectors;
    IF DOSError <> 0 then Begin Message_Erreur(1,0); exit; end;
  end;
{----------------------------------------------------------------------------}
Procedure Install_game;

Begin
  NormalCursor;
                {---------------------------------------------}
  If (Name=Name1 ) then Begin
                        end
                {---------------------------------------------}
  Else If (Name=Name2 ) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name3 ) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name4 ) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name5 ) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name6 ) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name7 ) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name8 ) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name9 ) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name10) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name11) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name12) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name13) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name14) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name15) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name16) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name17) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name18) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name19) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name20) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name21) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name22) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name23) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name24) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name25) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name26) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name27) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name28) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name29) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name30) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name31) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name32) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name33) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name34) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name35) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name36) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name37) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name38) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name39) then Begin
                             end
                {---------------------------------------------}
  Else If (Name=Name40) then Begin
                             end;
                {---------------------------------------------}
end;
{----------------------------------------------------------------------------}
Procedure Menu_texte;

Var Question_Answer : Char;
    Printer_Device : String[4];

Begin
  If Txt_file <> '' then Begin
  EffaceCursor;
  DessineBoite(9,7,72,19,5,true,0,13,True,3,3);
  DessineBoite(12,8,69,10,5,true,13,0,False,13,13);
  TextColor (14); Centrer('Text file Menu',12,69,2);
  DessineBoite(12,11,69,18,5,true,13,0,False,13,13);
  TextColor(15);
  Centrer('Before the installation, you must read',12,69,2);
  Centrer('the text file for more informations about the game.',12,69,3);
  TextColor(14); Centrer('('+Txt_file+')',12,69,4); TextColor(15);
  Centrer ('Press <Enter> to continue!',12,69,7);
  Readln;

  Source := FSearch('COMMAND.COM','C:\WINDOWS');
  if Source = '' then ProgramCommandCom := 'c:\command.com'
  Else ProgramCommandCom := 'c:\windows\command.com';

  CmdLine := '/c Edit '+Source_drive+':\'+ Path +'\'+ Txt_file;
  If (Open(Source_drive+':\'+Path+'\'+Txt_file,3)) then
  Begin
    DessineBoite(12,11,69,18,5,true,13,0,False,13,13);
    TextColor(15); Centrer('Processing!',12,69,4); TextColor(15);
    Delay(1500);
    SwapVectors;
    Exec(ProgramCommandCom, CmdLine) ;
    SwapVectors;
    If DOSError <> 0 then Begin Message_Erreur(1,0); exit; end;
    Install_game; end
  Else Begin Erreur := True; exit; end;
                         end
  Else Install_game;
end;
{----------------------------------------------------------------------------}
Procedure Fill_the_blanks;

Label SourceDrive, DestinationDrive, DestinationDirectory;
var DiskNumber : integer;
    SpaceDiskString : String[10];

function IntToStr(I: Longint): String;
{ Convert any integer type to a string }
var
 S: string[10];
begin
 Str(I, S);
 IntToStr := S;
end;

Procedure Write_Space_Disk;
begin
  If Destination_Drive <> 'í' then
  Begin
    I := 1;
    For I := 1 to ((Length(SpaceDiskString))-2) do
    Write(SpaceDiskString[I]);
    If (Length(SpaceDiskString) >= 3 ) then Write(',')
    Else Write('0,');
    If (Length(SpaceDiskString) >= 2 ) then Begin
    For J := ((Length(SpaceDiskString)-1)) to (Length(SpaceDiskString)) do
    Write(SpaceDiskString[J]); end
    Else If (Length(SpaceDiskString) = 1 ) then Begin
    Write('0'); Write(SpaceDiskString); end;
    Write(' Megs');
  end;
end;

Begin
If (Destination_drive_Access = False) then Begin
   Window(26,18,30,18); TextBackground(3); Clrscr; TextColor(14);
   If (Destination_drive='í') then Write('---')
   Else Write(Destination_drive,':\');
   Window(50,20,70,20); TextBackground(3); Clrscr; TextColor(14);
   DiskNumber := ord(Upcase(Destination_drive)) - 64;
   SpaceDisk := (Diskfree(DiskNumber)div 10000);
   SpaceDiskString := IntToStr(SpaceDisk);
   EffaceCursor; Write_Space_Disk; NormalCursor; end;
If (Destination_directory_Access = False) then Begin
   Window(30,19,72,19); TextBackground(3); Clrscr; TextColor(14);
   If (Destination_directory='í') then Write('--------')
   Else Write(Destination_directory); end;

SourceDrive:
  Begin
    Read_Char(21,17,25,17,0,'Letter');
    If ((Touche_Esc=False)and(Touche_Tab=False)and(Touche_Bas=False)
       and(Touche_Haut=False)) then Source_drive := Upcase(Choix);
    Window(21,17,25,17); TextBackground(3); Clrscr; TextColor(14);
    If Touche_Esc = True then Exit;
    If Source_drive <> #0 then Write(Source_drive,':\');
    If Touche_Tab = True then goto DestinationDrive
    Else If Touche_Bas = True then goto DestinationDrive
    Else If Touche_Haut = True then goto DestinationDirectory
  end;

DestinationDrive:
  Begin
  If (Destination_drive_Access = True) then Begin
    If (Destination_drive_Access = True) then Read_Char(26,18,30,18,0,'Letter');
    If ((Touche_Esc=False)and(Touche_Tab=False)and(Touche_Bas=False)
       and(Touche_Haut=False)) then Destination_drive := Upcase(Choix);
    Window(26,18,30,18); TextBackground(3); Clrscr; TextColor(14);
    If Touche_Esc = True then Exit;
    If (Destination_drive <> #0) then Write(Destination_drive,':\');
    If Touche_Tab = True then goto DestinationDirectory
    Else If Touche_Bas = True then goto DestinationDirectory
    Else If Touche_Haut = True then goto SourceDrive;
    Window(50,20,70,20); TextBackground(3); Clrscr; TextColor(14);
    DiskNumber := ord(Upcase(Destination_drive)) - 64;
    SpaceDisk := (Diskfree(DiskNumber)div 10000);
    SpaceDiskString := IntToStr(SpaceDisk);
    EffaceCursor; Write_Space_Disk; NormalCursor;
                                          end;
  end;


DestinationDirectory:
  Begin
  If (Destination_directory_Access = True) then Begin
    If (Destination_directory_Access = True) then begin
        Window(30,19,72,19); TextBackground(0); Clrscr; TextColor(14);
        Read_String(Destination_Directory); end;
    Window(30,19,72,19); TextBackground(3); Clrscr; TextColor(14);
    If Touche_Esc = True then Exit;
    If Destination_directory <> '' then Write(Destination_directory);
    If Touche_Tab = True then goto SourceDrive
    Else If Touche_Bas = True then goto SourceDrive
    Else If Touche_Haut = True then goto DestinationDrive
                                               end;
  end;

   EffaceCursor;
   Window (7, 16, 61, 16);
   Textbackground (3);
   Clrscr;                      { Pour effacer l'‚cran }
   TextColor (15);                  { Couleur du texte blanc }
   Write ('Are you ready to start the installation? (Y)es or (N)o');
   Textcolor (14);                    {Couleur des r‚ponses yellow}
   Gotoxy (43, 1);   Write ('Y');
   Gotoxy (52, 1);   Write ('N');
   Repeat
     ch := Readkey;
   Until (Upcase(Ch)=char(78)) or (Upcase(Ch)=char(89));
   Clrscr;
   NormalCursor;

  Case (Upcase(ch)) of
  'Y': Begin
  If (Source_drive=#0) then Begin Message_Erreur(4,3); Erreur:=True; end
  Else If (Destination_drive = #0) and (Destination_drive=#0) then
          Begin Message_Erreur(5,3); Erreur:=True; end
  Else If (Destination_directory = '') and (Destination_directory=#0) then
          Begin Message_Erreur(6,3); Erreur:=True; end
  Else If ((SpaceDisk div 100) < Megs) and (Destination_drive <> 'í') then
          Begin Message_Erreur(3,3); Erreur := True; end
  Else Menu_Texte; end;
  'N' : Begin Clrscr; Fill_The_Blanks end;
  end;
end;
{----------------------------------------------------------------------------}
Procedure Installation_Menu;

Begin
  NormalCursor;
  Touche_insert := false;
  BackGroundPrincipal(3);
  Barre_menu_bas('Autre',3);
  DessineBoite(2,4,78,22,3,true,0,11,True,7,7);
  DessineBoite(5,5,75,7,3,true,11,0,False,13,13);
  TextColor (15); Centrer('Installation Menu',5,75,2);

  Window(5,8,75,8); TextColor (14); Centrer(Name,5,75,1);

  DessineBoite(5,9,75,13,3,true,11,0,False,13,13);
  TextColor(15);
  Gotoxy(3,2);Write('Space required: ');
  TextColor(14); Write(Megs,' Megs'); TextColor(15);
  Gotoxy(3,3);Write('Operating system: ');
  TextColor(14); Write(OSystem); TextColor(15);
  Gotoxy(3,4);Write('Reference text file: ');
  TextColor(14); Write(Txt_file);

  DessineBoite(5,14,75,21,3,true,11,0,False,13,13);

  TextColor(15);
  Gotoxy(3,2);Write('Please fill all the blanks.');
  Gotoxy(3,4);Write('Source drive: ');
  Gotoxy(3,5);Write('Destination drive: ');
  Gotoxy(3,6);Write('Destination directory: ');
  Gotoxy(3,7);Write('Space disk available on destination drive: ');
  Fill_the_blanks;
  If Erreur = True then begin
                          Erreur := False;
                          Installation_Menu; end;
end;
{----------------------------------------------------------------------------}
Procedure InitiationVariables(VarName:String; VarMegs:integer;
          VarPath:Filename; VarOSystem, VarTxt_file, VarRun_file:String;
          VarModification_file:String; VarDestination_drive:Char;
          VarDestination_directory:String);
Begin
  Name:=VarName ;
  Megs:=VarMegs ;
  Path:=VarPath ;
  OSystem:=VarOSystem ;
  Txt_file:=VarTxt_file ;
  Run_file:=VarRun_file ;
  Modification_file:=VarModification_file ;
  Destination_drive:=VarDestination_drive ;
  If (Destination_drive=#0) then Destination_drive_Access:=True
  Else Destination_drive_Access:=False;
  Destination_directory:=VarDestination_directory ;
  If (Destination_directory='') then Destination_directory_Access:=True
  Else Destination_directory_Access:=False;
  Installation_Menu;

end;
{----------------------------------------------------------------------------}
Procedure Choix_du_Jeux;
Label Page1, Page2;

Begin
  NormalCursor;
  Touche_insert := false;
  BackGroundPrincipal(1);
  Barre_menu_bas('Principal',1);
  DessineBoite(2,4,78,22,1,true,0,9,True,7,7);
  DessineBoite(5,5,75,7,1,true,9,0,False,13,13);
  TextColor (15); Centrer('Main Menu (Multi-Jeux tome  )',5,75,2);
  Goto Page1;

Page1: Begin
  Choice:=0;
  Touche_Esc := False;
  DessineBoite(5,8,75,21,1,true,9,0,False,13,13);
  TextColor (15);
  Gotoxy(4,2)  ; Write(' - '+Name1 );
  Gotoxy(4,3)  ; Write(' - '+Name2 );
  Gotoxy(4,4)  ; Write(' - '+Name3 );
  Gotoxy(4,5)  ; Write(' - '+Name4 );
  Gotoxy(4,6)  ; Write(' - '+Name5 );
  Gotoxy(4,7)  ; Write(' - '+Name6 );
  Gotoxy(4,8)  ; Write(' - '+Name7 );
  Gotoxy(4,9)  ; Write(' - '+Name8 );
  Gotoxy(4,10) ; Write(' - '+Name9 );
  Gotoxy(4,11) ; Write(' - '+Name10);
  Gotoxy(38,2) ; Write(' - '+Name11);
  Gotoxy(38,3) ; Write(' - '+Name12);
  Gotoxy(38,4) ; Write(' - '+Name13);
  Gotoxy(38,5) ; Write(' - '+Name14);
  Gotoxy(38,6) ; Write(' - '+Name15);
  Gotoxy(38,7) ; Write(' - '+Name16);
  Gotoxy(38,8) ; Write(' - '+Name17);
  Gotoxy(38,9) ; Write(' - '+Name18);
  Gotoxy(38,10); Write(' - '+Name19);
  Gotoxy(38,11); Write(' - '+Name20);
  TextColor(14);
  Gotoxy(3,2)   ; Write(' 1') ; Gotoxy(3,3)   ; Write(' 2');
  Gotoxy(3,4)   ; Write(' 3') ; Gotoxy(3,5)   ; Write(' 4');
  Gotoxy(3,6)   ; Write(' 5') ; Gotoxy(3,7)   ; Write(' 6');
  Gotoxy(3,8)   ; Write(' 7') ; Gotoxy(3,9)   ; Write(' 8');
  Gotoxy(3,10)  ; Write(' 9') ; Gotoxy(3,11)  ; Write('10');
  Gotoxy(37,2)  ; Write('11') ; Gotoxy(37,3)  ; Write('12');
  Gotoxy(37,4)  ; Write('13') ; Gotoxy(37,5)  ; Write('14');
  Gotoxy(37,6)  ; Write('15') ; Gotoxy(37,7)  ; Write('16');
  Gotoxy(37,8)  ; Write('17') ; Gotoxy(37,9)  ; Write('18');
  Gotoxy(37,10) ; Write('19') ; Gotoxy(37,11) ; Write('20');
  TextColor (15);
  Gotoxy(3,13); Write('Your choice : ');
  TextColor(14);
  Repeat
     Repeat
       Window (21, 20, 30, 20);
       Textbackground (1);
       ClrScr;
       Read_integer(Choice);
     Until (Choice in [1..20]) or (Ch = Char(27)) or (Touche_F1 = True);
     If Touche_Esc = True then BoitePourQuitter(Choix)
     Else If (Touche_F1 = True) then goto page2;
     If (Upcase(Choix) = 'Y') then Quit := True
     Else Begin
            Quit := false;
            Window (28, 20, 74, 20);
            Textbackground (1);
            Clrscr; end;
  Until (Choice in [1..20]) or (Quit <> False);
  If (Quit=True) then Exit;
  Case (Choice) of
  1 : Begin InitiationVariables( Name1 ,Megs1 ,Path1 ,OSystem1 ,Txt_file1 ,Run_file1 ,
            Modification_file1 , Destination_drive1 ,Destination_directory1 ); end;
  2 : Begin InitiationVariables( Name2 ,Megs2 ,Path2 ,OSystem2 ,Txt_file2 ,Run_file2 ,
            Modification_file2 , Destination_drive2 ,Destination_directory2 ); end;
  3 : Begin InitiationVariables( Name3 ,Megs3 ,Path3 ,OSystem3 ,Txt_file3 ,Run_file3 ,
            Modification_file3 , Destination_drive3 ,Destination_directory3 ); end;
  4 : Begin InitiationVariables( Name4 ,Megs4 ,Path4 ,OSystem4 ,Txt_file4 ,Run_file4 ,
            Modification_file4 , Destination_drive4 ,Destination_directory4 ); end;
  5 : Begin InitiationVariables( Name5 ,Megs5 ,Path5 ,OSystem5 ,Txt_file5 ,Run_file5 ,
            Modification_file5 , Destination_drive5 ,Destination_directory5 ); end;
  6 : Begin InitiationVariables( Name6 ,Megs6 ,Path6 ,OSystem6 ,Txt_file6 ,Run_file6 ,
            Modification_file6 , Destination_drive6 ,Destination_directory6 ); end;
  7 : Begin InitiationVariables( Name7 ,Megs7 ,Path7 ,OSystem7 ,Txt_file7 ,Run_file7 ,
            Modification_file7 , Destination_drive7 ,Destination_directory7 ); end;
  8 : Begin InitiationVariables( Name8 ,Megs8 ,Path8 ,OSystem8 ,Txt_file8 ,Run_file8 ,
            Modification_file8 , Destination_drive8 ,Destination_directory8 ); end;
  9 : Begin InitiationVariables( Name9 ,Megs9 ,Path9 ,OSystem9 ,Txt_file9 ,Run_file9 ,
            Modification_file9 , Destination_drive9 ,Destination_directory9 ); end;
  10: Begin InitiationVariables( Name10,Megs10,Path10,OSystem10,Txt_file10,Run_file10,
            Modification_file10, Destination_drive10,Destination_directory10); end;
  11: Begin InitiationVariables( Name11,Megs11,Path11,OSystem11,Txt_file11,Run_file11,
            Modification_file11, Destination_drive11,Destination_directory11); end;
  12: Begin InitiationVariables( Name12,Megs12,Path12,OSystem12,Txt_file12,Run_file12,
            Modification_file12, Destination_drive12,Destination_directory12); end;
  13: Begin InitiationVariables( Name13,Megs13,Path13,OSystem13,Txt_file13,Run_file13,
            Modification_file13, Destination_drive13,Destination_directory13); end;
  14: Begin InitiationVariables( Name14,Megs14,Path14,OSystem14,Txt_file14,Run_file14,
            Modification_file14, Destination_drive14,Destination_directory14); end;
  15: Begin InitiationVariables( Name15,Megs15,Path15,OSystem15,Txt_file15,Run_file15,
            Modification_file15, Destination_drive15,Destination_directory15); end;
  16: Begin InitiationVariables( Name16,Megs16,Path16,OSystem16,Txt_file16,Run_file16,
            Modification_file16, Destination_drive16,Destination_directory16); end;
  17: Begin InitiationVariables( Name17,Megs17,Path17,OSystem17,Txt_file17,Run_file17,
            Modification_file17, Destination_drive17,Destination_directory17); end;
  18: Begin InitiationVariables( Name18,Megs18,Path18,OSystem18,Txt_file18,Run_file18,
            Modification_file18, Destination_drive18,Destination_directory18); end;
  19: Begin InitiationVariables( Name19,Megs19,Path19,OSystem19,Txt_file19,Run_file19,
            Modification_file19, Destination_drive19,Destination_directory19); end;
  20: Begin InitiationVariables( Name20,Megs20,Path20,OSystem20,Txt_file20,Run_file20,
            Modification_file20, Destination_drive20,Destination_directory20); end;
       end;
  exit;
       end;

Page2: Begin
  Touche_Esc := False;
  DessineBoite(5,8,75,21,1,true,9,0,False,13,13);
  TextColor (15);
  Gotoxy(4,2)  ; Write(' - '+Name21);
  Gotoxy(4,3)  ; Write(' - '+Name22);
  Gotoxy(4,4)  ; Write(' - '+Name23);
  Gotoxy(4,5)  ; Write(' - '+Name24);
  Gotoxy(4,6)  ; Write(' - '+Name25);
  Gotoxy(4,7)  ; Write(' - '+Name26);
  Gotoxy(4,8)  ; Write(' - '+Name27);
  Gotoxy(4,9)  ; Write(' - '+Name28);
  Gotoxy(4,10) ; Write(' - '+Name29);
  Gotoxy(4,11) ; Write(' - '+Name30);
  Gotoxy(38,2) ; Write(' - '+Name31);
  Gotoxy(38,3) ; Write(' - '+Name32);
  Gotoxy(38,4) ; Write(' - '+Name33);
  Gotoxy(38,5) ; Write(' - '+Name34);
  Gotoxy(38,6) ; Write(' - '+Name35);
  Gotoxy(38,7) ; Write(' - '+Name36);
  Gotoxy(38,8) ; Write(' - '+Name37);
  Gotoxy(38,9) ; Write(' - '+Name38);
  Gotoxy(38,10); Write(' - '+Name39);
  Gotoxy(38,11); Write(' - '+Name40);
  TextColor(14);
  Gotoxy(3,2)   ; Write('21') ; Gotoxy(3,3)   ; Write('22');
  Gotoxy(3,4)   ; Write('23') ; Gotoxy(3,5)   ; Write('24');
  Gotoxy(3,6)   ; Write('25') ; Gotoxy(3,7)   ; Write('26');
  Gotoxy(3,8)   ; Write('27') ; Gotoxy(3,9)   ; Write('28');
  Gotoxy(3,10)  ; Write('29') ; Gotoxy(3,11)  ; Write('30');
  Gotoxy(37,2)  ; Write('31') ; Gotoxy(37,3)  ; Write('32');
  Gotoxy(37,4)  ; Write('33') ; Gotoxy(37,5)  ; Write('34');
  Gotoxy(37,6)  ; Write('35') ; Gotoxy(37,7)  ; Write('36');
  Gotoxy(37,8)  ; Write('37') ; Gotoxy(37,9)  ; Write('38');
  Gotoxy(37,10) ; Write('39') ; Gotoxy(37,11) ; Write('40');
  TextColor (15);
  Gotoxy(3,13); Write('Your choice : ');
  TextColor(14);
  Repeat
     Repeat
       Window (21, 20, 30, 20);
       Textbackground (1);
       ClrScr;
       Read_integer(Choice);
     Until (Choice in [21..34]) or (Ch = Char(27)) or (Touche_F1 = True);
     If Touche_Esc = True then BoitePourQuitter(Choix)
     Else If (Touche_F1 = True) then goto page1;
     If (Upcase(Choix) = 'Y') then Quit := True
     Else Begin
            Quit := false;
            Window (28, 20, 74, 20);
            Textbackground (1);
            Clrscr; end;
  Until (Choice in [21..34]) or (Quit <> False);
  If (Quit=True) then Exit;
  Case (Choice) of
  21: Begin InitiationVariables( Name21,Megs21,Path21,OSystem21,Txt_file21,Run_file21,
            Modification_file21, Destination_drive21,Destination_directory21); end;
  22: Begin InitiationVariables( Name22,Megs22,Path22,OSystem22,Txt_file22,Run_file22,
            Modification_file22, Destination_drive22,Destination_directory22); end;
  23: Begin InitiationVariables( Name23,Megs23,Path23,OSystem23,Txt_file23,Run_file23,
            Modification_file23, Destination_drive23,Destination_directory23); end;
  24: Begin InitiationVariables( Name24,Megs24,Path24,OSystem24,Txt_file24,Run_file24,
            Modification_file24, Destination_drive24,Destination_directory24); end;
  25: Begin InitiationVariables( Name25,Megs25,Path25,OSystem25,Txt_file25,Run_file25,
            Modification_file25, Destination_drive25,Destination_directory25); end;
  26: Begin InitiationVariables( Name26,Megs26,Path26,OSystem26,Txt_file26,Run_file26,
            Modification_file26, Destination_drive26,Destination_directory26); end;
  27: Begin InitiationVariables( Name27,Megs27,Path27,OSystem27,Txt_file27,Run_file27,
            Modification_file27, Destination_drive27,Destination_directory27); end;
  28: Begin InitiationVariables( Name28,Megs28,Path28,OSystem28,Txt_file28,Run_file28,
            Modification_file28, Destination_drive28,Destination_directory28); end;
  29: Begin InitiationVariables( Name29,Megs29,Path29,OSystem29,Txt_file29,Run_file29,
            Modification_file29, Destination_drive29,Destination_directory29); end;
  30: Begin InitiationVariables( Name30,Megs30,Path30,OSystem30,Txt_file30,Run_file30,
            Modification_file30, Destination_drive30,Destination_directory30); end;
  31: Begin InitiationVariables( Name31,Megs31,Path31,OSystem31,Txt_file31,Run_file31,
            Modification_file31, Destination_drive31,Destination_directory31); end;
  32: Begin InitiationVariables( Name32,Megs32,Path32,OSystem32,Txt_file32,Run_file32,
            Modification_file32, Destination_drive32,Destination_directory32); end;
  33: Begin InitiationVariables( Name33,Megs33,Path33,OSystem33,Txt_file33,Run_file33,
            Modification_file33, Destination_drive33,Destination_directory33); end;
  34: Begin InitiationVariables( Name34,Megs34,Path34,OSystem34,Txt_file34,Run_file34,
            Modification_file34, Destination_drive34,Destination_directory34); end;
  35: Begin InitiationVariables( Name35,Megs35,Path35,OSystem35,Txt_file35,Run_file35,
            Modification_file35, Destination_drive35,Destination_directory35); end;
  36: Begin InitiationVariables( Name36,Megs36,Path36,OSystem36,Txt_file36,Run_file36,
            Modification_file36, Destination_drive36,Destination_directory36); end;
  37: Begin InitiationVariables( Name37,Megs37,Path37,OSystem37,Txt_file37,Run_file37,
            Modification_file37, Destination_drive37,Destination_directory37); end;
  38: Begin InitiationVariables( Name38,Megs38,Path38,OSystem38,Txt_file38,Run_file38,
            Modification_file38, Destination_drive38,Destination_directory38); end;
  39: Begin InitiationVariables( Name39,Megs39,Path39,OSystem39,Txt_file39,Run_file39,
            Modification_file39, Destination_drive39,Destination_directory39); end;
  40: Begin InitiationVariables( Name40,Megs40,Path40,OSystem40,Txt_file40,Run_file40,
            Modification_file40, Destination_drive40,Destination_directory40); end;
       end; end;
end;
{----------------------------------------------------------------------------}
Begin
  Clrscr;
  NormalCursor;
  Source := '';
  Quit := False;
  Erreur := False;
  Touche_insert := false;
  Repeat
  Choix_du_Jeux;
  Until Quit = True;
  fin(False);
END.

[Back to MENU SWAG index]  [Back to Main SWAG index]  [Original]