DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦0e3ce4f0e⟧ Ada Source

    Length: 10240 (0x2800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Interprete, seg_0491b5

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



with Comps_Dictionary, Verbs_Dictionary, Player_Entries;
with Text_Io, Bounded_String;
package body Interprete is

    The_Number_Of_Instructions : Integer := 0;

    function Exist_Entries_In_Dictionaries
                (C : Comps_Dictionary.Object; V : Verbs_Dictionary.Object)
                return Boolean is
        Exist : Boolean := True;
    begin
        Player_Entries.Open_Index;

        if not Player_Entries.Index_At_End then
            if not (Comps_Dictionary.Exist
                       (Player_Entries.Get_Indexed_Entry, C) or
                    Verbs_Dictionary.Exist
                       (Player_Entries.Get_Indexed_Entry, V)) then
                Text_Io.Put_Line ("Erreur :" &
                                  Player_Entries.Get_Indexed_Entry &
                                  " est une donnee inconnue du scenario");
                return False;
            end if;


            Player_Entries.Next_Index;
        end if;

        while not Player_Entries.Index_At_End loop

            if not (Comps_Dictionary.Exist
                       (Player_Entries.Get_Indexed_Entry, C)) then
                Exist := False;
                Text_Io.Put_Line ("Erreur :" &
                                  Player_Entries.Get_Indexed_Entry &
                                  " n est pas un complement");
            end if;
            Player_Entries.Next_Index;
        end loop;
        return Exist;
    end Exist_Entries_In_Dictionaries;

    function Total_Entries return Integer is
    begin
        return The_Number_Of_Instructions;
    end Total_Entries;

    function Number_Of_Entries return Natural is
        The_Number : Natural := 0;
    begin
        Player_Entries.Open_Index;
        while not Player_Entries.Index_At_End loop
            The_Number := The_Number + 1;
            Player_Entries.Next_Index;
        end loop;
        return The_Number;
    end Number_Of_Entries;

    function Is_Entry (A, B, C : String; Comp_Dict : Comps_Dictionary.Object)
                      return Boolean is

    begin

        Player_Entries.Open_Index;

        if not Player_Entries.Index_At_End then

            if A = "COMP" then
                if not Comps_Dictionary.Exist
                          (Player_Entries.Get_Indexed_Entry, Comp_Dict) then
                    return False;
                else
                    Player_Entries.Next_Index;
                end if;
            else
                if Player_Entries.Get_Indexed_Entry = A then
                    Player_Entries.Next_Index;
                end if;
            end if;

            if not Player_Entries.Index_At_End then
                if B = "COMP" then
                    if not Comps_Dictionary.Exist
                              (Player_Entries.Get_Indexed_Entry, Comp_Dict) then
                        return False;
                    else
                        Player_Entries.Next_Index;
                    end if;
                else
                    if Player_Entries.Get_Indexed_Entry = B then
                        Player_Entries.Next_Index;
                    end if;
                end if;

                if not Player_Entries.Index_At_End then
                    if Player_Entries.Get_Indexed_Entry = C then
                        return True;
                    else
                        return False;
                    end if;
                else
                    return True;
                end if;
            else
                return True;
            end if;
        else
            return False;
        end if;

    end Is_Entry;

    function First_Comp_Value (C : Comps_Dictionary.Object) return String is
    begin
        Player_Entries.Open_Index;
        while not Player_Entries.Index_At_End loop
            if Comps_Dictionary.Exist (Player_Entries.Get_Indexed_Entry, C) then
                return Player_Entries.Get_Indexed_Entry;
            end if;
            Player_Entries.Next_Index;
        end loop;
        return "";
    end First_Comp_Value;


    function Get_Player (C : Comps_Dictionary.Object;
                         V : Verbs_Dictionary.Object)
                        return Player_Entries.Token is
        Valid_Entry : Boolean := False;

    begin
        Test_Entry:
            while not Valid_Entry or (Number_Of_Entries = 0) loop
                Valid_Entry := Player_Entries.Get_Player_Entry;

                if not Valid_Entry then  
                    Text_Io.Put_Line (Player_Entries.Get_Player_Error);
                elsif Player_Entries.Is_Command then  
                    exit Test_Entry;
                else
                    Valid_Entry := Exist_Entries_In_Dictionaries (C, V);
                end if;

            end loop Test_Entry;

        if Player_Entries."=" (Player_Entries.Get_Command,
                               Player_Entries.Id) then
            The_Number_Of_Instructions := The_Number_Of_Instructions + 1;
        end if;

        return Player_Entries.Get_Command;
    end Get_Player;

    procedure Write_Help is
    begin
        Text_Io.Put_Line
           ("<<<<<<<<<<<   BIENVENUE DANS NOTRE MONDE  >>>>>>>>>>>>>>>>>");
        Text_Io.Put_Line
           ("<<                                                       >>");
        Text_Io.Put_Line
           ("<<            - Clade - Ehrhard - Kocher -               >>");
        Text_Io.Put_Line
           ("<<                                                       >>");
        Text_Io.Put_Line
           ("<<                                                       >>");
        Text_Io.Put_Line
           ("<<        a) JEU                                         >>");
        Text_Io.Put_Line
           ("<<                                                       >>");
        Text_Io.Put_Line
           ("<<  Pour jouer  TAPEZ VOS COMMANDES                      >>");
        Text_Io.Put_Line
           ("<<  Quitter avant la fin           TAPEZ   :fin          >>");
        Text_Io.Put_Line
           ("<<  Pour l'aide                    TAPEZ   :aide         >>");
        Text_Io.Put_Line
           ("<<                                                       >>");
        Text_Io.Put_Line
           ("<<                                                       >>");
        Text_Io.Put_Line
           ("<<        b) MISE AU POINT DU JEU                        >>");
        Text_Io.Put_Line
           ("<<                                                       >>");
        Text_Io.Put_Line
           ("<<  Afficher les types de donnees   TAPEZ  :modele       >>");
        Text_Io.Put_Line
           ("<<  Afficher les variables          TAPEZ  :symbole      >>");
        Text_Io.Put_Line
           ("<<  Afficher les actions            TAPEZ  :verbe        >>");
        Text_Io.Put_Line
           ("<<  Afficher les complements        TAPEZ  :complement   >>");
        Text_Io.Put_Line
           ("<<  Afficher les connections        TAPEZ  :connexion    >>");
        Text_Io.Put_Line
           ("<<  Afficher les liens              TAPEZ  :lien         >>");
        Text_Io.Put_Line
           ("<<  Liste instructions introduction TAPEZ  :introduction >>");
        Text_Io.Put_Line
           ("<<  Liste instructions generales    TAPEZ  :general      >>");
        Text_Io.Put_Line
           ("<<  Liste instructions globales     TAPEZ  :global       >>");
        Text_Io.Put_Line
           ("<<  Liste instructions locales      TAPEZ  :locale       >>");
        Text_Io.Put_Line
           ("<<  Execution en mode trace         TAPEZ  :trace        >>");
        Text_Io.Put_Line
           ("<<                                                       >>");
        Text_Io.Put_Line
           ("<<<<<<<<<<<<<<<<   BONNE CHANCE !!! >>>>>>>>>>>>>>>>>>>>>>>");
    end Write_Help;



end Interprete;

E3 Meta Data

    nblk1=9
    nid=0
    hdr6=12
        [0x00] rec0=1d rec1=00 rec2=01 rec3=000
        [0x01] rec0=1d rec1=00 rec2=02 rec3=02a
        [0x02] rec0=1e rec1=00 rec2=03 rec3=008
        [0x03] rec0=1e rec1=00 rec2=04 rec3=066
        [0x04] rec0=1d rec1=00 rec2=05 rec3=030
        [0x05] rec0=17 rec1=00 rec2=06 rec3=072
        [0x06] rec0=14 rec1=00 rec2=07 rec3=030
        [0x07] rec0=13 rec1=00 rec2=08 rec3=024
        [0x08] rec0=07 rec1=00 rec2=09 rec3=000
    tail 0x215467722865b46604419 0x42a00088462060003