|
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 - 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_┆