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