|
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: 14336 (0x3800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Registres, seg_025a22, seg_0268b8, seg_027519, seg_027e7b
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧ └─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Z80, Z80_Scr; with Text_Io; package body Registres is use Z80_Defs; -- VARIABLES ----------------------------------------------------------- Tab_Simple : array (Registre_Simple) of Octet.T_Octet; Tab_Double : array (Registre_Double range Ix .. Pc) of Mot.T_Mot; -- PROCEDURES ---------------------------------------------------------- function Lire_Simple (Le_Registre : Z80_Defs.Registre_Simple) return Octet.T_Octet is begin return Tab_Simple (Le_Registre); end Lire_Simple; ------------------------------------------------------------------------ procedure Reset is begin for I in Registre_Simple loop Tab_Simple (I) := 0; end loop; for I in Tab_Double'First .. Tab_Double'Last loop Tab_Double (I) := 0; end loop; end Reset; ------------------------------------------------------------------------ function Lire_Double (Le_Registre : Z80_Defs.Registre_Double) return Mot.T_Mot is Resultat : Mot.T_Mot := 0; begin case Le_Registre is when Ix .. Pc => Resultat := Tab_Double (Le_Registre); when Af_Prime => Resultat := Mot.Construire (Tab_Simple (A_Prime), Tab_Simple (F_Prime)); when Bc_Prime => Resultat := Mot.Construire (Tab_Simple (B_Prime), Tab_Simple (C_Prime)); when De_Prime => Resultat := Mot.Construire (Tab_Simple (D_Prime), Tab_Simple (E_Prime)); when Hl_Prime => Resultat := Mot.Construire (Tab_Simple (H_Prime), Tab_Simple (L_Prime)); when Af => Resultat := Mot.Construire (Tab_Simple (A), Tab_Simple (F)); when Bc => Resultat := Mot.Construire (Tab_Simple (B), Tab_Simple (C)); when De => Resultat := Mot.Construire (Tab_Simple (D), Tab_Simple (E)); when Hl => Resultat := Mot.Construire (Tab_Simple (H), Tab_Simple (L)); end case; return Resultat; end Lire_Double; ------------------------------------------------------------------------ procedure Ecrire_Simple (Le_Registre : Z80_Defs.Registre_Simple; Un_Octet : Octet.T_Octet) is begin Tab_Simple (Le_Registre) := Un_Octet; Z80_Scr.Afficher_Ecran_Reg (Le_Registre); end Ecrire_Simple; ------------------------------------------------------------------------ procedure Ecrire_Double (Le_Registre : Z80_Defs.Registre_Double; Un_Mot : Mot.T_Mot) is begin case Le_Registre is when Ix .. Pc => Tab_Double (Le_Registre) := Un_Mot; Z80_Scr.Afficher_Ecran_Reg (Le_Registre); when Af_Prime => Tab_Simple (A_Prime) := Mot.Poids_Fort (Un_Mot); Tab_Simple (F_Prime) := Mot.Poids_Faible (Un_Mot); Z80_Scr.Afficher_Ecran_Reg (A_Prime); Z80_Scr.Afficher_Ecran_Reg (F_Prime); when Bc_Prime => Tab_Simple (B_Prime) := Mot.Poids_Fort (Un_Mot); Tab_Simple (C_Prime) := Mot.Poids_Faible (Un_Mot); Z80_Scr.Afficher_Ecran_Reg (B_Prime); Z80_Scr.Afficher_Ecran_Reg (C_Prime); when De_Prime => Tab_Simple (D_Prime) := Mot.Poids_Fort (Un_Mot); Tab_Simple (E_Prime) := Mot.Poids_Faible (Un_Mot); Z80_Scr.Afficher_Ecran_Reg (D_Prime); Z80_Scr.Afficher_Ecran_Reg (E_Prime); when Hl_Prime => Tab_Simple (H_Prime) := Mot.Poids_Fort (Un_Mot); Tab_Simple (L_Prime) := Mot.Poids_Faible (Un_Mot); Z80_Scr.Afficher_Ecran_Reg (H_Prime); Z80_Scr.Afficher_Ecran_Reg (L_Prime); when Af => Tab_Simple (A) := Mot.Poids_Fort (Un_Mot); Tab_Simple (F) := Mot.Poids_Faible (Un_Mot); Z80_Scr.Afficher_Ecran_Reg (A); Z80_Scr.Afficher_Ecran_Reg (F); when Bc => Tab_Simple (B) := Mot.Poids_Fort (Un_Mot); Tab_Simple (C) := Mot.Poids_Faible (Un_Mot); Z80_Scr.Afficher_Ecran_Reg (B); Z80_Scr.Afficher_Ecran_Reg (C); when De => Tab_Simple (D) := Mot.Poids_Fort (Un_Mot); Tab_Simple (E) := Mot.Poids_Faible (Un_Mot); Z80_Scr.Afficher_Ecran_Reg (D); Z80_Scr.Afficher_Ecran_Reg (E); when Hl => Tab_Simple (H) := Mot.Poids_Fort (Un_Mot); Tab_Simple (L) := Mot.Poids_Faible (Un_Mot); Z80_Scr.Afficher_Ecran_Reg (H); Z80_Scr.Afficher_Ecran_Reg (L); end case; end Ecrire_Double; ------------------------------------------------------------------------ procedure Echange_Octet (Octet_1, Octet_2 : in out Octet.T_Octet) is Un_Octet : Octet.T_Octet; begin Un_Octet := Octet_1; Octet_1 := Octet_2; Octet_2 := Un_Octet; end Echange_Octet; ------------------------------------------------------------------------ procedure Echange_Af_Reg_Prime is begin Echange_Octet (Tab_Simple (A_Prime), Tab_Simple (A)); Echange_Octet (Tab_Simple (F_Prime), Tab_Simple (F)); Z80_Scr.Afficher_Ecran_Reg (A); Z80_Scr.Afficher_Ecran_Reg (F); Z80_Scr.Afficher_Ecran_Reg (A_Prime); Z80_Scr.Afficher_Ecran_Reg (F_Prime); end Echange_Af_Reg_Prime; ------------------------------------------------------------------------ procedure Echange_De_Hl is begin Echange_Octet (Tab_Simple (D), Tab_Simple (H)); Echange_Octet (Tab_Simple (E), Tab_Simple (L)); Z80_Scr.Afficher_Ecran_Reg (D); Z80_Scr.Afficher_Ecran_Reg (E); Z80_Scr.Afficher_Ecran_Reg (H); Z80_Scr.Afficher_Ecran_Reg (L); end Echange_De_Hl; ------------------------------------------------------------------------ procedure Echange_Bc_De_Hl_Reg_Prime is Reg_Fort, Reg_Faible : Octet.T_Octet; begin Echange_Octet (Tab_Simple (B_Prime), Tab_Simple (B)); Echange_Octet (Tab_Simple (C_Prime), Tab_Simple (C)); Echange_Octet (Tab_Simple (D_Prime), Tab_Simple (D)); Echange_Octet (Tab_Simple (E_Prime), Tab_Simple (E)); Echange_Octet (Tab_Simple (H_Prime), Tab_Simple (H)); Echange_Octet (Tab_Simple (L_Prime), Tab_Simple (L)); Z80_Scr.Afficher_Ecran_Reg (B); Z80_Scr.Afficher_Ecran_Reg (C); Z80_Scr.Afficher_Ecran_Reg (D); Z80_Scr.Afficher_Ecran_Reg (E); Z80_Scr.Afficher_Ecran_Reg (H); Z80_Scr.Afficher_Ecran_Reg (L); Z80_Scr.Afficher_Ecran_Reg (B_Prime); Z80_Scr.Afficher_Ecran_Reg (C_Prime); Z80_Scr.Afficher_Ecran_Reg (D_Prime); Z80_Scr.Afficher_Ecran_Reg (E_Prime); Z80_Scr.Afficher_Ecran_Reg (H_Prime); Z80_Scr.Afficher_Ecran_Reg (L_Prime); end Echange_Bc_De_Hl_Reg_Prime; end Registres;
nblk1=d nid=2 hdr6=12 [0x00] rec0=25 rec1=00 rec2=01 rec3=07c [0x01] rec0=02 rec1=00 rec2=08 rec3=002 [0x02] rec0=15 rec1=00 rec2=09 rec3=028 [0x03] rec0=1a rec1=00 rec2=04 rec3=03e [0x04] rec0=12 rec1=00 rec2=03 rec3=080 [0x05] rec0=15 rec1=00 rec2=0c rec3=006 [0x06] rec0=1c rec1=00 rec2=06 rec3=00e [0x07] rec0=17 rec1=00 rec2=05 rec3=01a [0x08] rec0=0f rec1=00 rec2=0b rec3=000 [0x09] rec0=06 rec1=00 rec2=06 rec3=000 [0x0a] rec0=1a rec1=00 rec2=06 rec3=004 [0x0b] rec0=11 rec1=00 rec2=0a rec3=000 [0x0c] rec0=06 rec1=40 rec2=00 rec3=000 tail 0x2151fc65c83a368d48915 0x42a00088462060003 Free Block Chain: 0x2: 0000 00 0a 03 fc 80 04 20 22 29 3b 04 00 36 20 20 20 ┆ "); 6 ┆ 0xa: 0000 00 07 02 69 80 4a 20 20 20 20 20 20 4f 63 74 65 ┆ i J Octe┆ 0x7: 0000 00 0d 01 ae 80 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 09 ┆ --------- ┆ 0xd: 0000 00 00 00 04 80 01 20 01 02 00 00 00 04 94 0f 60 ┆ `┆