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 - downloadIndex: ┃ B T ┃
Length: 12935 (0x3287) 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 Bus; with D_Gui_Driver; with Desassembleur; with Gui_Interface; with Memoire; with Mot; with Octet; with Registres; with Xt_Interface; with Z80_Defs; with Point_D_Arret; with Z80; with Z_Debug_Tache; package body Z_Debug is -------------------------------------------------------------------------- procedure Je_Teste is begin Gui_Interface.Init; Memoire.Creer; Bus.Creer; Z80.Creer; -- prologue Registres.Reset; Gui_Interface.Set_Message (Message => "Reset"); Rafraichir_Ecran; loop D_Gui_Driver.Process_Event; if Xt_Interface.Pending then Xt_Interface.Next_Event; Xt_Interface.Dispatch_Event; end if; end loop; exception when D_Gui_Driver.Kill => null; end Je_Teste; -------------------------------------------------------------------------- procedure Valider_Memoire is I, J : Positive := 1; Ligne : Natural := 0; Reception_Pointeur : String (1 .. 80) := (others => '#'); Reception_Dump : String (1 .. 16 * 50) := (others => '0'); Adresse : Mot.T_Mot; Donnee : Octet.T_Octet; begin Gui_Interface.Iterator_Memory_List; Gui_Interface.Iterator.Init; I := 1; while not Gui_Interface.Iterator.Done loop Reception_Pointeur (I) := Gui_Interface.Iterator.Value; I := I + 1; Gui_Interface.Iterator.Next; end loop; Gui_Interface.Iterator_Memory_Dump; Gui_Interface.Iterator.Init; J := 1; while not Gui_Interface.Iterator.Done loop Reception_Dump (J) := Gui_Interface.Iterator.Value; J := J + 1; Gui_Interface.Iterator.Next; end loop; I := 1; Ligne := 0; while Reception_Pointeur (I) /= '#' loop Adresse := Mot.Convert_Ascii_Mot (Reception_Pointeur (I), Reception_Pointeur (I + 1), Reception_Pointeur (I + 2), Reception_Pointeur (I + 3)); I := I + 4; J := (Ligne * 48) + 1; for Compteur_Octet in 1 .. 16 loop Donnee := Octet.Convert_Ascii_Octet (Reception_Dump (J), Reception_Dump (J + 1)); Memoire.Acces_Octet (Memoire.Ecrire, Adresse, Donnee); Adresse := Mot.Add (Adresse, Mot.Construire (0, 1)); J := J + 3; end loop; Ligne := Ligne + 1; end loop; end Valider_Memoire; -------------------------------------------------------------------------- procedure Valider_Ecran is use Z80_Defs; Reception : String (1 .. 80); J : Positive := 1; Un_Octet : Octet.T_Octet; Un_Mot : Mot.T_Mot; begin -- recuperation de la chaine Gui_Interface.Iterator_Z80_Status; Gui_Interface.Iterator.Init; while not Gui_Interface.Iterator.Done loop Reception (J) := Gui_Interface.Iterator.Value; J := J + 1; Gui_Interface.Iterator.Next; end loop; --Gui_Interface.Set_Instruction ("ecran lu"); -- affectation des registres Un_Octet := Octet.Convert_Ascii_Octet (Reception (1), Reception (2)); Registres.Ecrire_Simple (A, Un_Octet); Un_Octet := Octet.Convert_Ascii_Octet (Reception (3), Reception (4)); Registres.Ecrire_Simple (F, Un_Octet); Un_Octet := Octet.Convert_Ascii_Octet (Reception (5), Reception (6)); Registres.Ecrire_Simple (B, Un_Octet); Un_Octet := Octet.Convert_Ascii_Octet (Reception (7), Reception (8)); Registres.Ecrire_Simple (C, Un_Octet); Un_Octet := Octet.Convert_Ascii_Octet (Reception (9), Reception (10)); Registres.Ecrire_Simple (D, Un_Octet); Un_Octet := Octet.Convert_Ascii_Octet (Reception (11), Reception (12)); Registres.Ecrire_Simple (E, Un_Octet); Un_Octet := Octet.Convert_Ascii_Octet (Reception (13), Reception (14)); Registres.Ecrire_Simple (H, Un_Octet); Un_Octet := Octet.Convert_Ascii_Octet (Reception (15), Reception (16)); Registres.Ecrire_Simple (L, Un_Octet); Un_Octet := Octet.Convert_Ascii_Octet (Reception (17), Reception (18)); Registres.Ecrire_Simple (I, Un_Octet); --------------------- Un_Mot := Mot.Convert_Ascii_Mot (Reception (19), Reception (20), Reception (21), Reception (22)); Registres.Ecrire_Double (Af_Prime, Un_Mot); Un_Mot := Mot.Convert_Ascii_Mot (Reception (23), Reception (24), Reception (25), Reception (26)); Registres.Ecrire_Double (Bc_Prime, Un_Mot); Un_Mot := Mot.Convert_Ascii_Mot (Reception (27), Reception (28), Reception (29), Reception (30)); Registres.Ecrire_Double (De_Prime, Un_Mot); Un_Mot := Mot.Convert_Ascii_Mot (Reception (31), Reception (32), Reception (33), Reception (34)); Registres.Ecrire_Double (Hl_Prime, Un_Mot); --------------------- Un_Mot := Mot.Convert_Ascii_Mot (Reception (35), Reception (36), Reception (37), Reception (38)); Registres.Ecrire_Double (Ix, Un_Mot); Un_Mot := Mot.Convert_Ascii_Mot (Reception (39), Reception (40), Reception (41), Reception (42)); Registres.Ecrire_Double (Iy, Un_Mot); Un_Mot := Mot.Convert_Ascii_Mot (Reception (43), Reception (44), Reception (45), Reception (46)); Registres.Ecrire_Double (Sp, Un_Mot); Un_Mot := Mot.Convert_Ascii_Mot (Reception (47), Reception (48), Reception (49), Reception (50)); Registres.Ecrire_Double (Pc, Un_Mot); -- recuperation de la chaine des points d arret Gui_Interface.Iterator_Break_List; J := 1; Gui_Interface.Iterator.Init; while not Gui_Interface.Iterator.Done loop Reception (J) := Gui_Interface.Iterator.Value; J := J + 1; Gui_Interface.Iterator.Next; end loop; Point_D_Arret.Creer; J := 1; for Numero in Point_D_Arret.T_Taille_Liste loop if Reception (J) /= '#' then Un_Mot := Mot.Convert_Ascii_Mot (Reception (J), Reception (J + 1), Reception (J + 2), Reception (J + 3)); Point_D_Arret.Mise_A_Jour_Liste (Un_Mot, Numero); end if; J := J + 4; end loop; -- Lecture du Dump Memoire ------------------------ Valider_Memoire; end Valider_Ecran; ------------------------------------------------------------------------- procedure Rafraichir_Memoire is I, J : Positive := 1; Reception : String (1 .. 80) := (others => '#'); Emission : String (1 .. 36) := (others => '0'); Adresse : Mot.T_Mot; Donnee : Octet.T_Octet; begin Gui_Interface.Iterator_Memory_List; Gui_Interface.Iterator.Init; I := 1; while not Gui_Interface.Iterator.Done loop Reception (I) := Gui_Interface.Iterator.Value; I := I + 1; Gui_Interface.Iterator.Next; end loop; Gui_Interface.Delete_Memory_Dump; I := 1; while Reception (I) /= '#' loop Adresse := Mot.Convert_Ascii_Mot (Reception (I), Reception (I + 1), Reception (I + 2), Reception (I + 3)); I := I + 4; for J in 1 .. 4 loop Emission (J) := Reception ((I + J) - 1); end loop; J := 5; for Compteur_Octet in 1 .. 16 loop Memoire.Acces_Octet (Memoire.Lire, Adresse, Donnee); Octet.Convert_Octet_Ascii (Donnee, Emission (J), Emission (J + 1)); J := J + 2; Adresse := Mot.Add (Adresse, Mot.Construire (0, 1)); end loop; Gui_Interface.Set_Memory_Line (Emission); end loop; Gui_Interface.Display_Memory_Dump; end Rafraichir_Memoire; -------------------------------------------------------------------------- procedure Rafraichir_Ecran is use Z80_Defs; Emission : String (1 .. 56) := (others => ' '); J : Positive := 1; Un_Octet : Octet.T_Octet; Un_Mot : Mot.T_Mot; Reg_Ix, Reg_Iy, Reg_Sp, Reg_Pc : Mot.T_Mot; Trouvee : Boolean := False; begin Un_Octet := Registres.Lire_Simple (A); Octet.Convert_Octet_Ascii (Un_Octet, Emission (J), Emission (J + 1)); J := J + 2; Un_Octet := Registres.Lire_Simple (F); Octet.Convert_Octet_Ascii (Un_Octet, Emission (J), Emission (J + 1)); J := J + 2; Un_Octet := Registres.Lire_Simple (B); Octet.Convert_Octet_Ascii (Un_Octet, Emission (J), Emission (J + 1)); J := J + 2; Un_Octet := Registres.Lire_Simple (C); Octet.Convert_Octet_Ascii (Un_Octet, Emission (J), Emission (J + 1)); J := J + 2; Un_Octet := Registres.Lire_Simple (D); Octet.Convert_Octet_Ascii (Un_Octet, Emission (J), Emission (J + 1)); J := J + 2; Un_Octet := Registres.Lire_Simple (E); Octet.Convert_Octet_Ascii (Un_Octet, Emission (J), Emission (J + 1)); J := J + 2; Un_Octet := Registres.Lire_Simple (H); Octet.Convert_Octet_Ascii (Un_Octet, Emission (J), Emission (J + 1)); J := J + 2; Un_Octet := Registres.Lire_Simple (L); Octet.Convert_Octet_Ascii (Un_Octet, Emission (J), Emission (J + 1)); J := J + 2; Un_Octet := Registres.Lire_Simple (I); Octet.Convert_Octet_Ascii (Un_Octet, Emission (J), Emission (J + 1)); J := J + 2; Un_Mot := Registres.Lire_Double (Af_Prime); Mot.Convert_Mot_Ascii (Un_Mot, Emission (J), Emission (J + 1), Emission (J + 2), Emission (J + 3)); J := J + 4; Un_Mot := Registres.Lire_Double (Bc_Prime); Mot.Convert_Mot_Ascii (Un_Mot, Emission (J), Emission (J + 1), Emission (J + 2), Emission (J + 3)); J := J + 4; Un_Mot := Registres.Lire_Double (De_Prime); Mot.Convert_Mot_Ascii (Un_Mot, Emission (J), Emission (J + 1), Emission (J + 2), Emission (J + 3)); J := J + 4; Un_Mot := Registres.Lire_Double (Hl_Prime); Mot.Convert_Mot_Ascii (Un_Mot, Emission (J), Emission (J + 1), Emission (J + 2), Emission (J + 3)); J := J + 4; Reg_Ix := Registres.Lire_Double (Ix); Mot.Convert_Mot_Ascii (Reg_Ix, Emission (J), Emission (J + 1), Emission (J + 2), Emission (J + 3)); J := J + 4; Reg_Iy := Registres.Lire_Double (Iy); Mot.Convert_Mot_Ascii (Reg_Iy, Emission (J), Emission (J + 1), Emission (J + 2), Emission (J + 3)); J := J + 4; Reg_Sp := Registres.Lire_Double (Sp); Mot.Convert_Mot_Ascii (Reg_Sp, Emission (J), Emission (J + 1), Emission (J + 2), Emission (J + 3)); J := J + 4; Reg_Pc := Registres.Lire_Double (Pc); Mot.Convert_Mot_Ascii (Reg_Pc, Emission (J), Emission (J + 1), Emission (J + 2), Emission (J + 3)); J := J + 4; Memoire.Acces_Octet (Memoire.Lire, Reg_Ix, Un_Octet); Octet.Convert_Octet_Ascii (Un_Octet, Emission (J), Emission (J + 1)); J := J + 2; Memoire.Acces_Octet (Memoire.Lire, Reg_Iy, Un_Octet); Octet.Convert_Octet_Ascii (Un_Octet, Emission (J), Emission (J + 1)); J := J + 2; Memoire.Acces_Octet (Memoire.Lire, Reg_Sp, Un_Octet); Octet.Convert_Octet_Ascii (Un_Octet, Emission (J), Emission (J + 1)); J := J + 2; -- Recherche de l'instruction_suivante while not Trouvee loop Memoire.Acces_Octet (Memoire.Lire, Reg_Pc, Un_Octet); Reg_Pc := Mot.Add (Reg_Pc, 1); Trouvee := Desassembleur.Traiter_Code (Un_Octet); end loop; Gui_Interface.Set_Instruction (Desassembleur.Instruction_En_Texte); Gui_Interface.Update (Emission); Rafraichir_Memoire; end Rafraichir_Ecran; end Z_Debug;