|
|
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: 8192 (0x2000)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Z80, seg_020f1d
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
with Adresse;
with Gui_Interface;
with Registres;
with Sequenceur;
with Point_D_Arret;
with Erreur;
with Z_Debug;
package body Z80 is
-- TYPES -----------------------------------------------------------------
task type T_Z80 is
pragma Os_Task (0);
entry Etat (Son_Etat : out T_Etat);
entry Reset;
entry Afficher;
entry Signaler (Le_Signal : Z80_Defs.Signaux_Periph);
entry Lancer;
entry Pas_A_Pas;
entry Stopper;
end T_Z80;
type Pt_Tache_Z80 is access T_Z80;
-- VARIABLES -------------------------------------------------------------
Tache_Z80 : Pt_Tache_Z80;
-- PROCEDURES ------------------------------------------------------------
function Etat return T_Etat is
Son_Etat : T_Etat;
begin
Tache_Z80.Etat (Son_Etat);
return Son_Etat;
end Etat;
----------------------------------------------
procedure Creer is
begin
Tache_Z80 := new T_Z80;
end Creer;
----------------------------------------------
procedure Reset is
begin
Tache_Z80.Reset;
end Reset;
----------------------------------------------
procedure Afficher is
begin
Tache_Z80.Afficher;
end Afficher;
----------------------------------------------
procedure Signaler (Le_Signal : Z80_Defs.Signaux_Periph) is
begin
Tache_Z80.Signaler (Le_Signal);
end Signaler;
----------------------------------------------
procedure Lancer is
begin
Tache_Z80.Lancer;
end Lancer;
----------------------------------------------
procedure Pas_A_Pas is
begin
Tache_Z80.Pas_A_Pas;
end Pas_A_Pas;
----------------------------------------------
procedure Stopper is
begin
Tache_Z80.Stopper;
end Stopper;
----------------------------------------------
procedure Detruire is
begin
abort Tache_Z80.all;
end Detruire;
-- TACHES ----------------------------------------------------------------
task body T_Z80 is
Etat_Z80 : T_Etat := Endormi;
Reg_Pc : Adresse.T_Adresse;
begin
loop
select
---------------------------------
accept Etat (Son_Etat : out T_Etat) do
Son_Etat := Etat_Z80;
end Etat;
or
---------------------------------
accept Reset do
Registres.Reset;
Halt := False;
Son_Mode := 0;
Iff_1 := False;
Iff_2 := False;
Etat_Z80 := Actif;
end Reset;
---------------------------------
or
accept Afficher do
if Etat_Z80 = Actif then
null;
--Gui_Interface.Set_Message (Message => "Actif");
else
null;
--Gui_Interface.Set_Message (Message => "Endormi");
end if;
end Afficher;
---------------------------------
or
accept Signaler (Le_Signal : Z80_Defs.Signaux_Periph) do
null;
end Signaler;
---------------------------------
or
accept Lancer do
Sequenceur.Lancer;
Etat_Z80 := Actif;
end Lancer;
---------------------------------
or
accept Pas_A_Pas do
Sequenceur.Lancer;
end Pas_A_Pas;
---------------------------------
or
accept Stopper do
Etat_Z80 := Endormi;
end Stopper;
---------------------------------
else
if Etat_Z80 = Actif then
Reg_Pc := Registres.Lire_Double (Z80_Defs.Pc);
if (Erreur.Presente or else
Point_D_Arret.Present (Reg_Pc)) then
Etat_Z80 := Endormi;
else
Sequenceur.Lancer;
end if;
end if;
end select;
end loop;
end T_Z80;
end Z80;
nblk1=7
nid=3
hdr6=c
[0x00] rec0=2c rec1=00 rec2=01 rec3=048
[0x01] rec0=00 rec1=00 rec2=02 rec3=01c
[0x02] rec0=2f rec1=00 rec2=05 rec3=000
[0x03] rec0=27 rec1=00 rec2=07 rec3=016
[0x04] rec0=1f rec1=00 rec2=06 rec3=03c
[0x05] rec0=1f rec1=00 rec2=04 rec3=000
[0x06] rec0=00 rec1=3b rec2=41 rec3=055
tail 0x2150d0280823d48099b0d 0x42a00088462060003
Free Block Chain:
0x3: 0000 00 00 01 60 80 21 75 62 6c 65 20 28 5a 38 30 5f ┆ ` !uble (Z80_┆