|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 3775 (0xebf)
Types: TextFile
Names: »B«
└─⟦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⟧
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;