DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦5e0f373a4⟧ TextFile

    Length: 3775 (0xebf)
    Types: TextFile
    Names: »B«

Derivation

└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13
    └─ ⟦124ff5788⟧ »DATA« 
        └─⟦this⟧ 
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 
└─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16
    └─ ⟦6f12a12be⟧ »DATA« 
        └─⟦this⟧ 
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
    └─ ⟦d65440be7⟧ »DATA« 
        └─⟦this⟧ 

TextFile

with Registres;
with Sequenceur;
with Text_Io;

package body Z80 is

    -- TYPES -----------------------------------------------------------------

    type T_Etat is (Inexistant, Pret, Actif, Endormi);

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

    Etat : T_Etat := Inexistant;
    La_Fin : Boolean := False;


    -- TACHES ----------------------------------------------------------------

    task body T_Z80 is
    begin
        while (not La_Fin) loop
            select

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

                when (Etat = Inexistant) =>
                    accept Reset do
                        Registres.Reset;
                        Halt := False;
                        Son_Mode := 0;
                        Iff_1 := False;
                        Iff_2 := False;  
                        Etat := Pret;
                    end Reset;

                    ---------------------------------
            or
                when (Etat = Endormi or Etat = Pret) =>
                    accept Afficher do
                        Text_Io.Put_Line
                           ("== Z80 ==============================");
                        Text_Io.Put_Line ("");
                        Text_Io.Put ("Halt : ");
                        Text_Io.Put_Line (Boolean'Image (Halt));
                        Text_Io.Put ("Mode : ");
                        Text_Io.Put_Line (Z80_Defs.Mode'Image (Son_Mode));
                        Text_Io.Put ("IFF_1 : ");
                        Text_Io.Put_Line (Boolean'Image (Iff_1));
                        Text_Io.Put ("IFF_2 : ");
                        Text_Io.Put_Line (Boolean'Image (Iff_2));
                        Text_Io.Put_Line ("");
                        Registres.Afficher;
                    end Afficher;

                    ---------------------------------
            or

                accept Signaler (Le_Signal : Z80_Defs.Signaux_Periph) do
                    null;
                end Signaler;

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

            or
                when (Etat = Pret) =>
                    accept Lancer do
                        Etat := Actif;
                    end Lancer;

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

            or
                when (Etat = Endormi or Etat = Pret) =>
                    accept Pas_A_Pas do
                        Sequenceur.Lancer;
                        Registres.Afficher;
                    end Pas_A_Pas;

                    ---------------------------------
            or
                accept Stopper do
                    Etat := Inexistant;
                end Stopper;

                ---------------------------------
            or  
                when (Etat = Actif) =>
                    accept Endormir do
                        Etat := Endormi;
                    end Endormir;

                    ---------------------------------
            or  
                when (Etat = Endormi) =>
                    accept Reveiller do
                        Etat := Actif;
                    end Reveiller;

                    ---------------------------------
            or
                accept Fin do
                    La_Fin := True;
                end Fin;

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

            else
                if Etat = Actif then
                    if (Registres.Lire_Double (Z80_Defs.Pc) = 16#38#) then
                        Etat := Pret;  
                    else
                        Sequenceur.Lancer;
                        Registres.Afficher;
                    end if;  
                end if;

            end select;

        end loop;

    end T_Z80;

end Z80;