|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 7168 (0x1c00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Z80, seg_00f504
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦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;
nblk1=6
nid=5
hdr6=8
[0x00] rec0=25 rec1=00 rec2=01 rec3=034
[0x01] rec0=16 rec1=00 rec2=06 rec3=016
[0x02] rec0=1f rec1=00 rec2=02 rec3=020
[0x03] rec0=23 rec1=00 rec2=03 rec3=000
[0x04] rec0=1a rec1=00 rec2=06 rec3=001
[0x05] rec0=1f rec1=d0 rec2=21 rec3=300
tail 0x2150b5706822b50300b77 0x42a00088462060003
Free Block Chain:
0x5: 0000 00 04 00 09 80 06 2d 2d 2d 2d 2d 2d 06 07 2d 2d ┆ ------ --┆
0x4: 0000 00 00 02 ca 80 1e 20 20 20 20 2d 2d 20 20 20 20 ┆ -- ┆