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

⟦2ce33cb85⟧ Ada Source

    Length: 9216 (0x2400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Test_Registre, seg_00f562

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 Octet;  
with Registres;
with Text_Io;  
with Z80_Defs;

package body Test_Registre is


    -- VARIABLES ----------------------------------------------------------

    Octet_1, Octet_2, Choix : Octet.T_Octet := 0;
    Le_Registre : Z80_Defs.Operande;  
    Le_Mot : Z80_Defs.Mot;

    -- PROCEDURES ---------------------------------------------------------

    function Lire_Choix return Octet.T_Octet;
    procedure Lire_1_Octet;
    procedure Lire_2_Octets;
    function Lire_Registre return Z80_Defs.Operande;

    -----------------------------------------------------------------------

    procedure Je_Teste_Les_Registres is
    begin

        while True loop
            Choix := Lire_Choix;

            case Choix is

                when 0 =>
                    Registres.Reset;

                when 1 =>  
                    Text_Io.Put ("Numero du registre : ");
                    Le_Registre := Lire_Registre;
                    Octet_1 := Registres.Lire_Simple (Le_Registre);  
                    Text_Io.Put ("Valeur du registre simple : ");
                    Octet.Afficher_Octet_Hexa (Octet_1);
                    Text_Io.Put_Line ("");

                when 2 =>
                    Text_Io.Put ("Numero du registre : ");
                    Le_Registre := Lire_Registre;
                    Le_Mot := Registres.Lire_Double (Le_Registre);
                    Text_Io.Put ("Valeur du registre double : ");
                    Octet.Afficher_Octet_Hexa (Octet.T_Octet
                                                  (Integer (Le_Mot) / 256));
                    Octet.Afficher_Octet_Hexa (Octet.T_Octet
                                                  (Integer (Le_Mot) mod 256));
                    Text_Io.Put_Line ("");

                when 3 =>  
                    Text_Io.Put ("Numero du registre : ");
                    Le_Registre := Lire_Registre;
                    Lire_1_Octet;
                    Registres.Ecrire_Simple (Le_Registre, Octet_1);
                    Text_Io.Put_Line ("");

                when 4 =>  
                    Text_Io.Put ("Numero du registre : ");
                    Le_Registre := Lire_Registre;
                    Lire_2_Octets;
                    Le_Mot := Z80_Defs.Mot ((Integer (Octet_1) * 256) +
                                            Integer (Octet_2));
                    Registres.Ecrire_Double (Le_Registre, Le_Mot);
                    Text_Io.Put_Line ("");


                when 5 =>
                    Registres.Echange_Af_Reg_Prime;

                when 6 =>
                    Registres.Echange_De_Hl;

                when 7 =>
                    Registres.Echange_Bc_De_Hl_Reg_Prime;

                when 8 =>
                    Registres.Afficher;

                when others =>
                    Text_Io.Put_Line ("erreur, mauvais choix");

            end case;
        end loop;
    end Je_Teste_Les_Registres;

    ----------------------------------------------------------------------



    function Lire_Choix return Octet.T_Octet is

    begin
        Text_Io.Put_Line ("");
        Text_Io.Put_Line ("------------------------------------------");
        Text_Io.Put_Line ("");
        Text_Io.Put ("choix  > ");
        return Octet.Lire_Octet_Hexa;
    end Lire_Choix;

    ----------------------------------------------------------------------

    procedure Lire_1_Octet is

    begin  
        Text_Io.Put ("octet_1> ");
        Octet_1 := Octet.Lire_Octet_Hexa;
    end Lire_1_Octet;

    ----------------------------------------------------------------------

    procedure Lire_2_Octets is

    begin
        Text_Io.Put ("octet_1> ");
        Octet_1 := Octet.Lire_Octet_Hexa;
        Text_Io.Put ("octet_2> ");
        Octet_2 := Octet.Lire_Octet_Hexa;
    end Lire_2_Octets;

    ----------------------------------------------------------------------

    function Lire_Registre return Z80_Defs.Operande is
        Num_Reg : Octet.T_Octet := 0;  
        use Z80_Defs;
    begin
        Num_Reg := Octet.Lire_Octet_Hexa;

        case Num_Reg is
            when 1 =>
                return (A);
            when 2 =>
                return (B);
            when 3 =>
                return (C);
            when 4 =>
                return (D);
            when 5 =>
                return (E);
            when 6 =>
                return (H);
            when 7 =>
                return (L);
            when 8 =>
                return (F);
            when 9 =>
                return (I);
            when 10 =>
                return (R);
            when 11 =>
                return (Af_Prime);
            when 12 =>
                return (Bc_Prime);
            when 13 =>
                return (De_Prime);
            when 14 =>
                return (Hl_Prime);
            when 15 =>
                return (Af);
            when 16 =>
                return (Bc);
            when 17 =>
                return (De);
            when 18 =>
                return (Hl);
            when 19 =>
                return (Ix);
            when 20 =>
                return (Iy);
            when 21 =>
                return (Sp);
            when 22 =>
                return (Pc);
            when others =>
                Text_Io.Put_Line ("Registre inconnu");

        end case;
    end Lire_Registre;


end Test_Registre;

E3 Meta Data

    nblk1=8
    nid=7
    hdr6=e
        [0x00] rec0=27 rec1=00 rec2=01 rec3=008
        [0x01] rec0=13 rec1=00 rec2=05 rec3=026
        [0x02] rec0=1d rec1=00 rec2=08 rec3=01a
        [0x03] rec0=0f rec1=00 rec2=06 rec3=00c
        [0x04] rec0=24 rec1=00 rec2=02 rec3=00c
        [0x05] rec0=24 rec1=00 rec2=03 rec3=00c
        [0x06] rec0=0c rec1=00 rec2=04 rec3=001
        [0x07] rec0=a3 rec1=f9 rec2=f3 rec3=120
    tail 0x2150b56e2822b501e7012 0x42a00088462060003
Free Block Chain:
  0x7: 0000  00 00 00 2e 00 22 20 20 20 20 20 20 20 20 54 65  ┆   . "        Te┆