|
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: 14336 (0x3800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, function Instruction_En_Texte, seg_020ee2, separate Desassembleur
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
separate (Desassembleur) function Instruction_En_Texte return String is use Z80_Defs; -- Types ---------------------------------------------------- subtype Longueur_Chaine is Positive range 1 .. 20; type Chaine_Variable (Taille : Longueur_Chaine := 1) is record Chaine : String (1 .. Taille); end record; type T_Pt_String is access String; type T_Table_Operande is array (A .. Aucun) of T_Pt_String; -- Variables ------------------------------------------------ Chaine_Resultat : String (1 .. 20); Une_Chaine : Chaine_Variable; Un_Octet : Octet.T_Octet; Un_Mot : Mot.T_Mot; Chaine_Octet : String (1 .. 2); Chaine_Mot : String (1 .. 4); Table_Operande : T_Table_Operande := (A => new String'("A"), B => new String'("B"), C => new String'("C"), D => new String'("D"), E => new String'("E"), H => new String'("H"), L => new String'("L"), F => new String'("F"), I => new String'("I"), R => new String'("R"), Af_Prime => new String'("AF'"), Bc_Prime => new String'("BC'"), De_Prime => new String'("DE'"), Hl_Prime => new String'("HL'"), Af => new String'("AF"), Bc => new String'("BC"), De => new String'("DE"), Hl => new String'("HL"), Ix => new String'("IX"), Iy => new String'("IY"), Sp => new String'("SP"), Pc => new String'("PC"), Nz => new String'("NZ"), Z => new String'("Z"), Nc => new String'("NC"), Cy => new String'("C"), Po => new String'("PO"), Pe => new String'("PE"), P => new String'("P"), M => new String'("M"), N => new String'("n"), Nn => new String'("nn"), Offset_E => new String'("e"), Bit_0 => new String'("0"), Bit_1 => new String'("1"), Bit_2 => new String'("2"), Bit_3 => new String'("3"), Bit_4 => new String'("4"), Bit_5 => new String'("5"), Bit_6 => new String'("6"), Bit_7 => new String'("7"), Z80_0 => new String'("0"), Z80_1 => new String'("1"), Z80_2 => new String'("2"), Z80_00h => new String'("00H"), Z80_08h => new String'("08H"), Z80_10h => new String'("10H"), Z80_18h => new String'("18H"), Z80_20h => new String'("20H"), Z80_28h => new String'("28H"), Z80_30h => new String'("30H"), Z80_38h => new String'("38H"), N_Indirect => new String'("(n)"), C_Indirect => new String'("(C)"), Bc_Indirect => new String'("(BC)"), De_Indirect => new String'("(DE)"), Hl_Indirect => new String'("(HL)"), Ix_Indirect => new String'("(IX)"), Iy_Indirect => new String'("(IY)"), Ix_Plus_D_Indirect => new String'("(IX+d)"), Iy_Plus_D_Indirect => new String'("(IY+d)"), Nn_Indirect => new String'("(nn)"), Sp_Indirect => new String'("(SP)"), Aucun => new String'(" ")); ------------------------------ function "&" (Chaine_1 : Chaine_Variable; Chaine_2 : String) return Chaine_Variable is Resultat : Chaine_Variable; begin Resultat := Chaine_Variable'(Taille => Chaine_1.Taille + Chaine_2'Length, Chaine => Chaine_1.Chaine & Chaine_2); return Resultat; end "&"; ------------------------------ begin case Instruction_Decodee.Mnemo is when Z80_In => Une_Chaine := Une_Chaine & "IN"; when Z80_Out => Une_Chaine := Une_Chaine & "OUT"; when Z80_And => Une_Chaine := Une_Chaine & "AND"; when Z80_Or => Une_Chaine := Une_Chaine & "OR"; when Z80_Xor => Une_Chaine := Une_Chaine & "XOR"; when others => Une_Chaine := Une_Chaine & Mnemonic'Image (Instruction_Decodee.Mnemo); end case; Un_Octet := Mot.Poids_Faible (Instruction_Decodee.Donnee); Un_Mot := Mot.Construire (Mot.Poids_Faible (Instruction_Decodee.Donnee), Mot.Poids_Fort (Instruction_Decodee.Donnee)); Octet.Convert_Octet_Ascii (Un_Octet, Chaine_Octet (1), Chaine_Octet (2)); Mot.Convert_Mot_Ascii (Un_Mot, Chaine_Mot (1), Chaine_Mot (2), Chaine_Mot (3), Chaine_Mot (4)); case Instruction_Decodee.Op_Gauche is when Offset_E | N => Une_Chaine := (Une_Chaine & " ") & Chaine_Octet; when Nn => Une_Chaine := (Une_Chaine & " ") & Chaine_Mot; when N_Indirect => Une_Chaine := (Une_Chaine & " (") & Chaine_Octet & ")"; when Nn_Indirect => Une_Chaine := (Une_Chaine & " (") & Chaine_Mot & ")"; when Ix_Plus_D_Indirect => Une_Chaine := ((Une_Chaine & " (IX+") & Chaine_Octet) & ")"; when Iy_Plus_D_Indirect => Une_Chaine := ((Une_Chaine & " (IY+") & Chaine_Octet) & ")"; when Aucun => null; when others => Une_Chaine := (Une_Chaine & " ") & Table_Operande (Instruction_Decodee.Op_Gauche).all; end case; case Instruction_Decodee.Op_Droit is when Offset_E | N => Une_Chaine := (Une_Chaine & ",") & Chaine_Octet; when Nn => Une_Chaine := (Une_Chaine & ",") & Chaine_Mot; when N_Indirect => Une_Chaine := ((Une_Chaine & ",(") & Chaine_Octet) & ")"; when Nn_Indirect => Une_Chaine := ((Une_Chaine & ",(") & Chaine_Mot) & ")"; when Ix_Plus_D_Indirect => Une_Chaine := ((Une_Chaine & ",(IX+") & Chaine_Octet) & ")"; when Iy_Plus_D_Indirect => Une_Chaine := ((Une_Chaine & ",(IY+") & Chaine_Octet) & ")"; when Aucun => null; when others => Une_Chaine := (Une_Chaine & ",") & Table_Operande (Instruction_Decodee.Op_Droit).all; end case; if Une_Chaine.Taille > 20 then Chaine_Resultat := Une_Chaine.Chaine (1 .. 20); else Chaine_Resultat (1 .. Une_Chaine.Chaine'Last) := Une_Chaine.Chaine; Chaine_Resultat (Une_Chaine.Chaine'Last + 1 .. 20) := (others => ' '); end if; Chaine_Resultat (1) := ' '; return Chaine_Resultat; end Instruction_En_Texte;
nblk1=d nid=7 hdr6=14 [0x00] rec0=21 rec1=00 rec2=01 rec3=00c [0x01] rec0=00 rec1=00 rec2=06 rec3=026 [0x02] rec0=14 rec1=00 rec2=04 rec3=032 [0x03] rec0=14 rec1=00 rec2=0d rec3=04c [0x04] rec0=14 rec1=00 rec2=05 rec3=008 [0x05] rec0=20 rec1=00 rec2=08 rec3=038 [0x06] rec0=0b rec1=00 rec2=0c rec3=002 [0x07] rec0=25 rec1=00 rec2=0b rec3=000 [0x08] rec0=1f rec1=00 rec2=0a rec3=086 [0x09] rec0=0a rec1=00 rec2=03 rec3=000 [0x0a] rec0=1b rec1=00 rec2=0c rec3=000 [0x0b] rec0=1b rec1=00 rec2=03 rec3=000 [0x0c] rec0=06 rec1=40 rec2=00 rec3=000 tail 0x2170d3b92823762c88a30 0x42a00088462062803 Free Block Chain: 0x7: 0000 00 09 00 21 80 1e 61 67 65 20 28 49 6e 73 74 72 ┆ ! age (Instr┆ 0x9: 0000 00 02 00 5a 80 13 65 63 6f 64 65 65 2e 4f 70 5f ┆ Z ecodee.Op_┆ 0x2: 0000 00 00 00 c1 80 16 20 20 3d 3e 20 6e 65 77 20 53 ┆ => new S┆