|
|
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 - metrics - downloadIndex: T V
Length: 26575 (0x67cf)
Types: TextFile
Names: »V«
└─⟦516dceb10⟧ Bits:30000751 8mm tape, Rational 1000, RCI_VADS
└─⟦9a14c9417⟧ »DATA«
└─⟦this⟧
package Machine_Code is
-- Description for the MC68000, MC68010, CPU32, MC68020, MC68030, MC68040,
-- MC68851, and MC68881/MC68882.
pragma Suppress (All_Checks);
pragma Suppress (Exception_Tables);
pragma Not_Elaborated;
type Opcode is (Abcd, Abcd_B, Add_B, Add_W, Add_L, Adda_W, Adda_L, Addi_B,
Addi_W, Addi_L, Addq_B, Addq_W, Addq_L, Addx_B, Addx_W,
Addx_L, And_B, And_W, And_L, Andi_B, Andi_W, Andi_L, Asl_B,
Asl_W, Asl_L, Asr_B, Asr_W, Asr_L, Bcc, Bcs, Beq, Bge,
Bgt, Bhi, Ble, Bls, Blt, Bmi, Bne, Bpl, Bvc, Bvs, Bchg_B,
Bchg_L, Bclr_B, Bclr_L, Bfchg, Bfclr, Bfexts, Bfextu, Bfffo,
Bfins, Bfset, Bftst, Bgnd, Bkpt, Bra, Bset_B, Bset_L, Bsr,
Btst_B, Btst_L, Callm, Cas_B, Cas_W, Cas_L, Cas2_W, Cas2_L,
Chk_W, Chk_L, Chk2_B, Chk2_W, Chk2_L, Cinvl, Cinvp, Cinva,
Cpushl, Cpushp, Cpusha, Clr_B, Clr_W, Clr_L, Cmp_B, Cmp_W,
Cmp_L, Cmpa_W, Cmpa_L, Cmpi_B, Cmpi_W, Cmpi_L, Cmpm_B,
Cmpm_W, Cmpm_L, Cmp2_B, Cmp2_W, Cmp2_L, Dbcc, Dbcs, Dbeq,
Dbf, Dbge, Dbgt, Dbhi, Dble, Dbls, Dblt, Dbmi, Dbne, Dbpl,
Dbt, Dbvc, Dbvs, Divs_W, Divs_L, Divsl_L, Divu_W, Divu_L,
Divul_L, Eor_B, Eor_W, Eor_L, Eori_B, Eori_W, Eori_L,
Exg, Exg_L, Ext_W, Ext_L, Extb_L, Illegal, Jmp, Jsr, Lea,
Lea_L, Link_W, Link_L, Lpstop, Lsl_B, Lsl_W, Lsl_L, Lsr_B,
Lsr_W, Lsr_L, Move16, Move_B, Move_W, Move_L, Movea_W,
Movea_L, Movec, Movec_L, Movem_W, Movem_L, Movep_W, Movep_L,
Moveq, Moveq_L, Moves_B, Moves_W, Moves_L, Muls_W, Muls_L,
Mulu_W, Mulu_L, Nbcd, Nbcd_B, Neg_B, Neg_W, Neg_L, Negx_B,
Negx_W, Negx_L, Nop, Not_B, Not_W, Not_L, Or_B, Or_W, Or_L,
Ori_B, Ori_W, Ori_L, Pack, Pea, Pea_L, Reset, Rol_B, Rol_W,
Rol_L, Ror_B, Ror_W, Ror_L, Roxl_B, Roxl_W, Roxl_L, Roxr_B,
Roxr_W, Roxr_L, Rtd, Rte, Rtm, Rtr, Rts, Sbcd, Sbcd_B,
Scc, Scs, Seq, Sf, Sge, Sgt, Shi, Sle, Sls, Slt, Smi,
Sne, Spl, St, Svc, Svs, Scc_B, Scs_B, Seq_B, Sf_B, Sge_B,
Sgt_B, Shi_B, Sle_B, Sls_B, Slt_B, Smi_B, Sne_B, Spl_B,
St_B, Svc_B, Svs_B, Stop, Sub_B, Sub_W, Sub_L, Suba_W,
Suba_L, Subi_B, Subi_W, Subi_L, Subq_B, Subq_W, Subq_L,
Subx_B, Subx_W, Subx_L, Swap, Swap_W, Tas, Tas_B, Tbls_B,
Tbls_W, Tbls_L, Tblsn_B, Tblsn_W, Tblsn_L, Tblu_B, Tblu_W,
Tblu_L, Tblun_B, Tblun_W, Tblun_L, Trap, Trapcc, Trapcs,
Trapeq, Trapf, Trapge, Trapgt, Traphi, Traple, Trapls,
Traplt, Trapmi, Trapne, Trappl, Trapt, Trapvc, Trapvs,
Trapcc_W, Trapcs_W, Trapeq_W, Trapf_W, Trapge_W, Trapgt_W,
Traphi_W, Traple_W, Trapls_W, Traplt_W, Trapmi_W, Trapne_W,
Trappl_W, Trapt_W, Trapvc_W, Trapvs_W, Trapcc_L, Trapcs_L,
Trapeq_L, Trapf_L, Trapge_L, Trapgt_L, Traphi_L, Traple_L,
Trapls_L, Traplt_L, Trapmi_L, Trapne_L, Trappl_L, Trapt_L,
Trapvc_L, Trapvs_L, Trapv, Tst_B, Tst_W, Tst_L, Unlk,
Unpk, Pbbs, Pbbc, Pbls, Pblc, Pbss, Pbsc, Pbas, Pbac,
Pbws, Pbwc, Pbis, Pbic, Pbgs, Pbgc, Pbcs, Pbcc, Pdbbs,
Pdbbc, Pdbls, Pdblc, Pdbss, Pdbsc, Pdbas, Pdbac, Pdbws,
Pdbwc, Pdbis, Pdbic, Pdbgs, Pdbgc, Pdbcs, Pdbcc, Pflusha,
Pflush, Pflushan, Pflushn, Pflushs, Pflushr, Ploadr,
Ploadw, Pmove_B, Pmove_W, Pmove_L, Pmove_Q, Pmovefd_W,
Pmovefd_L, Pmovefd_Q, Prestore, Psave, Psbs, Psbc, Psls,
Pslc, Psss, Pssc, Psas, Psac, Psws, Pswc, Psis, Psic,
Psgs, Psgc, Pscs, Pscc, Psbs_B, Psbc_B, Psls_B, Pslc_B,
Psss_B, Pssc_B, Psas_B, Psac_B, Psws_B, Pswc_B, Psis_B,
Psic_B, Psgs_B, Psgc_B, Pscs_B, Pscc_B, Ptestr, Ptestw,
Ptrapbs, Ptrapbc, Ptrapls, Ptraplc, Ptrapss, Ptrapsc,
Ptrapas, Ptrapac, Ptrapws, Ptrapwc, Ptrapis, Ptrapic,
Ptrapgs, Ptrapgc, Ptrapcs, Ptrapcc, Ptrapbs_W, Ptrapbc_W,
Ptrapls_W, Ptraplc_W, Ptrapss_W, Ptrapsc_W, Ptrapas_W,
Ptrapac_W, Ptrapws_W, Ptrapwc_W, Ptrapis_W, Ptrapic_W,
Ptrapgs_W, Ptrapgc_W, Ptrapcs_W, Ptrapcc_W, Ptrapbs_L,
Ptrapbc_L, Ptrapls_L, Ptraplc_L, Ptrapss_L, Ptrapsc_L,
Ptrapas_L, Ptrapac_L, Ptrapws_L, Ptrapwc_L, Ptrapis_L,
Ptrapic_L, Ptrapgs_L, Ptrapgc_L, Ptrapcs_L, Ptrapcc_L,
Pvalid, Pvalid_L, Fabs_B, Fabs_W, Fabs_L, Fabs_S, Fabs_D,
Fabs_X, Fabs_P, Fsabs_B, Fsabs_W, Fsabs_L, Fsabs_S, Fsabs_D,
Fsabs_X, Fsabs_P, Fdabs_B, Fdabs_W, Fdabs_L, Fdabs_S,
Fdabs_D, Fdabs_X, Fdabs_P, Facos_B, Facos_W, Facos_L,
Facos_S, Facos_D, Facos_X, Facos_P, Fsadd_B, Fsadd_W,
Fsadd_L, Fsadd_S, Fsadd_D, Fsadd_X, Fsadd_P, Fdadd_B,
Fdadd_W, Fdadd_L, Fdadd_S, Fdadd_D, Fdadd_X, Fdadd_P,
Fadd_B, Fadd_W, Fadd_L, Fadd_S, Fadd_D, Fadd_X, Fadd_P,
Fasin_B, Fasin_W, Fasin_L, Fasin_S, Fasin_D, Fasin_X,
Fasin_P, Fatan_B, Fatan_W, Fatan_L, Fatan_S, Fatan_D,
Fatan_X, Fatan_P, Fatanh_B, Fatanh_W, Fatanh_L, Fatanh_S,
Fatanh_D, Fatanh_X, Fatanh_P, Fbeq, Fbne, Fbgt, Fbngt, Fbge,
Fbnge, Fblt, Fbnlt, Fble, Fbnle, Fbgl, Fbngl, Fbgle, Fbngle,
Fbogt, Fbule, Fboge, Fbult, Fbolt, Fbuge, Fbole, Fbugt,
Fbogl, Fbueq, Fbor, Fbun, Fbf, Fbt, Fbsf, Fbst, Fbseq,
Fbsne, Fcmp_B, Fcmp_W, Fcmp_L, Fcmp_S, Fcmp_D, Fcmp_X,
Fcmp_P, Fcos_B, Fcos_W, Fcos_L, Fcos_S, Fcos_D, Fcos_X,
Fcos_P, Fcosh_B, Fcosh_W, Fcosh_L, Fcosh_S, Fcosh_D,
Fcosh_X, Fcosh_P, Fdbeq, Fdbne, Fdbgt, Fdbngt, Fdbge,
Fdbnge, Fdblt, Fdbnlt, Fdble, Fdbnle, Fdbgl, Fdbngl, Fdbgle,
Fdbngle, Fdbogt, Fdbule, Fdboge, Fdbult, Fdbolt, Fdbuge,
Fdbole, Fdbugt, Fdbogl, Fdbueq, Fdbor, Fdbun, Fdbf, Fdbt,
Fdbsf, Fdbst, Fdbseq, Fdbsne, Fdiv_B, Fdiv_W, Fdiv_L,
Fdiv_S, Fdiv_D, Fdiv_X, Fdiv_P, Fsdiv_B, Fsdiv_W, Fsdiv_L,
Fsdiv_S, Fsdiv_D, Fsdiv_X, Fsdiv_P, Fddiv_B, Fddiv_W,
Fddiv_L, Fddiv_S, Fddiv_D, Fddiv_X, Fddiv_P, Fetox_B,
Fetox_W, Fetox_L, Fetox_S, Fetox_D, Fetox_X, Fetox_P,
Fetoxm1_B, Fetoxm1_W, Fetoxm1_L, Fetoxm1_S, Fetoxm1_D,
Fetoxm1_X, Fetoxm1_P, Fgetexp_B, Fgetexp_W, Fgetexp_L,
Fgetexp_S, Fgetexp_D, Fgetexp_X, Fgetexp_P, Fgetman_B,
Fgetman_W, Fgetman_L, Fgetman_S, Fgetman_D, Fgetman_X,
Fgetman_P, Fint_B, Fint_W, Fint_L, Fint_S, Fint_D, Fint_X,
Fint_P, Fintrz_B, Fintrz_W, Fintrz_L, Fintrz_S, Fintrz_D,
Fintrz_X, Fintrz_P, Flog10_B, Flog10_W, Flog10_L, Flog10_S,
Flog10_D, Flog10_X, Flog10_P, Flog2_B, Flog2_W, Flog2_L,
Flog2_S, Flog2_D, Flog2_X, Flog2_P, Flogn_B, Flogn_W,
Flogn_L, Flogn_S, Flogn_D, Flogn_X, Flogn_P, Flognp1_B,
Flognp1_W, Flognp1_L, Flognp1_S, Flognp1_D, Flognp1_X,
Flognp1_P, Fmod_B, Fmod_W, Fmod_L, Fmod_S, Fmod_D, Fmod_X,
Fmod_P, Fsmove_B, Fsmove_W, Fsmove_L, Fsmove_S, Fsmove_D,
Fsmove_X, Fsmove_P, Fdmove_B, Fdmove_W, Fdmove_L, Fdmove_S,
Fdmove_D, Fdmove_X, Fdmove_P, Fmove_B, Fmove_W, Fmove_L,
Fmove_S, Fmove_D, Fmove_X, Fmove_P, Fmovecr_X, Fmovem_L,
Fmovem_X, Fsmul_B, Fsmul_W, Fsmul_L, Fsmul_S, Fsmul_D,
Fsmul_X, Fsmul_P, Fdmul_B, Fdmul_W, Fdmul_L, Fdmul_S,
Fdmul_D, Fdmul_X, Fdmul_P, Fmul_B, Fmul_W, Fmul_L, Fmul_S,
Fmul_D, Fmul_X, Fmul_P, Fsneg_B, Fsneg_W, Fsneg_L, Fsneg_S,
Fsneg_D, Fsneg_X, Fsneg_P, Fdneg_B, Fdneg_W, Fdneg_L,
Fdneg_S, Fdneg_D, Fdneg_X, Fdneg_P, Fneg_B, Fneg_W, Fneg_L,
Fneg_S, Fneg_D, Fneg_X, Fneg_P, Fnop, Frem_B, Frem_W,
Frem_L, Frem_S, Frem_D, Frem_X, Frem_P, Frestore, Fsave,
Fscale_B, Fscale_W, Fscale_L, Fscale_S, Fscale_D, Fscale_X,
Fscale_P, Fseq, Fsne, Fsgt, Fsngt, Fsge, Fsnge, Fslt, Fsnlt,
Fsle, Fsnle, Fsgl, Fsngl, Fsgle, Fsngle, Fsogt, Fsule,
Fsoge, Fsult, Fsolt, Fsuge, Fsole, Fsugt, Fsogl, Fsueq,
Fsor, Fsun, Fsf, Fst, Fssf, Fsst, Fsseq, Fssne, Fseq_B,
Fsne_B, Fsgt_B, Fsngt_B, Fsge_B, Fsnge_B, Fslt_B, Fsnlt_B,
Fsle_B, Fsnle_B, Fsgl_B, Fsngl_B, Fsgle_B, Fsngle_B,
Fsogt_B, Fsule_B, Fsoge_B, Fsult_B, Fsolt_B, Fsuge_B,
Fsole_B, Fsugt_B, Fsogl_B, Fsueq_B, Fsor_B, Fsun_B, Fsf_B,
Fst_B, Fssf_B, Fsst_B, Fsseq_B, Fssne_B, Fsgldiv_B,
Fsgldiv_W, Fsgldiv_L, Fsgldiv_S, Fsgldiv_D, Fsgldiv_X,
Fsgldiv_P, Fsglmul_B, Fsglmul_W, Fsglmul_L, Fsglmul_S,
Fsglmul_D, Fsglmul_X, Fsglmul_P, Fsin_B, Fsin_W, Fsin_L,
Fsin_S, Fsin_D, Fsin_X, Fsin_P, Fsincos_B, Fsincos_W,
Fsincos_L, Fsincos_S, Fsincos_D, Fsincos_X, Fsincos_P,
Fsinh_B, Fsinh_W, Fsinh_L, Fsinh_S, Fsinh_D, Fsinh_X,
Fsinh_P, Fssqrt_B, Fssqrt_W, Fssqrt_L, Fssqrt_S, Fssqrt_D,
Fssqrt_X, Fssqrt_P, Fdsqrt_B, Fdsqrt_W, Fdsqrt_L, Fdsqrt_S,
Fdsqrt_D, Fdsqrt_X, Fdsqrt_P, Fsqrt_B, Fsqrt_W, Fsqrt_L,
Fsqrt_S, Fsqrt_D, Fsqrt_X, Fsqrt_P, Fssub_B, Fssub_W,
Fssub_L, Fssub_S, Fssub_D, Fssub_X, Fssub_P, Fdsub_B,
Fdsub_W, Fdsub_L, Fdsub_S, Fdsub_D, Fdsub_X, Fdsub_P,
Fsub_B, Fsub_W, Fsub_L, Fsub_S, Fsub_D, Fsub_X, Fsub_P,
Ftan_B, Ftan_W, Ftan_L, Ftan_S, Ftan_D, Ftan_X, Ftan_P,
Ftanh_B, Ftanh_W, Ftanh_L, Ftanh_S, Ftanh_D, Ftanh_X,
Ftanh_P, Ftentox_B, Ftentox_W, Ftentox_L, Ftentox_S,
Ftentox_D, Ftentox_X, Ftentox_P, Ftrapeq, Ftrapne, Ftrapgt,
Ftrapngt, Ftrapge, Ftrapnge, Ftraplt, Ftrapnlt, Ftraple,
Ftrapnle, Ftrapgl, Ftrapngl, Ftrapgle, Ftrapngle, Ftrapogt,
Ftrapule, Ftrapoge, Ftrapult, Ftrapolt, Ftrapuge, Ftrapole,
Ftrapugt, Ftrapogl, Ftrapueq, Ftrapor, Ftrapun, Ftrapf,
Ftrapt, Ftrapsf, Ftrapst, Ftrapseq, Ftrapsne, Ftrapeq_W,
Ftrapne_W, Ftrapgt_W, Ftrapngt_W, Ftrapge_W, Ftrapnge_W,
Ftraplt_W, Ftrapnlt_W, Ftraple_W, Ftrapnle_W, Ftrapgl_W,
Ftrapngl_W, Ftrapgle_W, Ftrapngle_W, Ftrapogt_W, Ftrapule_W,
Ftrapoge_W, Ftrapult_W, Ftrapolt_W, Ftrapuge_W, Ftrapole_W,
Ftrapugt_W, Ftrapogl_W, Ftrapueq_W, Ftrapor_W, Ftrapun_W,
Ftrapf_W, Ftrapt_W, Ftrapsf_W, Ftrapst_W, Ftrapseq_W,
Ftrapsne_W, Ftrapeq_L, Ftrapne_L, Ftrapgt_L, Ftrapngt_L,
Ftrapge_L, Ftrapnge_L, Ftraplt_L, Ftrapnlt_L, Ftraple_L,
Ftrapnle_L, Ftrapgl_L, Ftrapngl_L, Ftrapgle_L, Ftrapngle_L,
Ftrapogt_L, Ftrapule_L, Ftrapoge_L, Ftrapult_L, Ftrapolt_L,
Ftrapuge_L, Ftrapole_L, Ftrapugt_L, Ftrapogl_L, Ftrapueq_L,
Ftrapor_L, Ftrapun_L, Ftrapf_L, Ftrapt_L, Ftrapsf_L,
Ftrapst_L, Ftrapseq_L, Ftrapsne_L, Ftst_B, Ftst_W, Ftst_L,
Ftst_S, Ftst_D, Ftst_X, Ftst_P, Ftwotox_B, Ftwotox_W,
Ftwotox_L, Ftwotox_S, Ftwotox_D, Ftwotox_X, Ftwotox_P);
type Size is (Byte, Word, Long);
type Operand is private;
type Operand_Seq is array (Positive range <>) of Operand;
N : Positive;
--
-- Instruction formats.
--
type Code_0 (Op : Opcode) is
record
null;
end record;
type Code_1 (Op : Opcode) is
record
Oprnd_1 : Operand;
end record;
type Code_2 (Op : Opcode) is
record
Oprnd_1 : Operand;
Oprnd_2 : Operand;
end record;
type Code_3 (Op : Opcode) is
record
Oprnd_1 : Operand;
Oprnd_2 : Operand;
Oprnd_3 : Operand;
end record;
type Code_4 (Op : Opcode) is
record
Oprnd_1 : Operand;
Oprnd_2 : Operand;
Oprnd_3 : Operand;
Oprnd_4 : Operand;
end record;
type Code_6 (Op : Opcode) is
record
Oprnd_1 : Operand;
Oprnd_2 : Operand;
Oprnd_3 : Operand;
Oprnd_4 : Operand;
Oprnd_5 : Operand;
Oprnd_6 : Operand;
end record;
--
-- Data formats.
--
type Data_1 (Sz : Size) is
record
Oprnd_1 : Operand;
end record;
type Data_N (Sz : Size) is
record
Oprnd_N : Operand_Seq (1 .. N);
end record;
--
-- Call formats.
--
type Call_0 is
record
Subp : Operand;
end record;
type Call_1 is
record
Subp : Operand;
Oprnd_1 : Operand;
end record;
type Call_N is
record
Subp : Operand;
Oprnd_N : Operand_Seq (1 .. N);
end record;
--
-- Registers.
--
D0 : constant Operand;
D1 : constant Operand;
D2 : constant Operand;
D3 : constant Operand;
D4 : constant Operand;
D5 : constant Operand;
D6 : constant Operand;
D7 : constant Operand;
A0 : constant Operand;
A1 : constant Operand;
A2 : constant Operand;
A3 : constant Operand;
A4 : constant Operand;
A5 : constant Operand;
A6 : constant Operand;
A7 : constant Operand;
Sp : constant Operand;
-- Floating point registers.
Fp0 : constant Operand;
Fp1 : constant Operand;
Fp2 : constant Operand;
Fp3 : constant Operand;
Fp4 : constant Operand;
Fp5 : constant Operand;
Fp6 : constant Operand;
Fp7 : constant Operand;
-- Status and Control registers.
Pc : constant Operand;
Sr : constant Operand;
Ccr : constant Operand;
Sfc : constant Operand;
Dfc : constant Operand;
Cacr : constant Operand;
Usp : constant Operand;
Vbr : constant Operand;
Caar : constant Operand;
Msp : constant Operand;
Isp : constant Operand;
-- Floating-point status registers.
Fpcr : constant Operand;
Fpsr : constant Operand;
Fpiar : constant Operand;
-- Suppresed registers.
Zd0 : constant Operand;
Zd1 : constant Operand;
Zd2 : constant Operand;
Zd3 : constant Operand;
Zd4 : constant Operand;
Zd5 : constant Operand;
Zd6 : constant Operand;
Zd7 : constant Operand;
Za0 : constant Operand;
Za1 : constant Operand;
Za2 : constant Operand;
Za3 : constant Operand;
Za4 : constant Operand;
Za5 : constant Operand;
Za6 : constant Operand;
Za7 : constant Operand;
Zpc : constant Operand;
-- MC68851 registers.
Crp : constant Operand;
Drp : constant Operand;
Srp : constant Operand;
Tc : constant Operand;
Pcsr : constant Operand;
Psr : constant Operand;
Cal : constant Operand;
Val : constant Operand;
Sccr : constant Operand;
Ac : constant Operand;
Bad0 : constant Operand;
Bad1 : constant Operand;
Bad2 : constant Operand;
Bad3 : constant Operand;
Bad4 : constant Operand;
Bad5 : constant Operand;
Bad6 : constant Operand;
Bad7 : constant Operand;
Bac0 : constant Operand;
Bac1 : constant Operand;
Bac2 : constant Operand;
Bac3 : constant Operand;
Bac4 : constant Operand;
Bac5 : constant Operand;
Bac6 : constant Operand;
Bac7 : constant Operand;
Mmusr : constant Operand; -- MC68030 psr
Tt0 : constant Operand; -- MC68030
Tt1 : constant Operand; -- MC68030
Itt0 : constant Operand; -- MC68040
Itt1 : constant Operand; -- MC68040
Dtt0 : constant Operand; -- MC68040
Dtt1 : constant Operand; -- MC68040
Urp : constant Operand; -- MC68040
Nc : constant Operand; -- MC68040 CINV/CPUSH no cache
Dc : constant Operand; -- MC68040 CINV/CPUSH data cache
Ic : constant Operand; -- MC68040 CINV/CPUSH instruction cache
Bc : constant Operand; -- MC68040 CINV/CPUSH data & instruction cache
--
-- MC68881 on-chip ROM offsets.
--
Pi : constant := 16#00#;
Log10_2 : constant := 16#0B#;
E : constant := 16#0C#;
Log2_E : constant := 16#0D#;
Log10_E : constant := 16#0E#;
Zero : constant := 16#0F#;
Ln_2 : constant := 16#30#;
Ln_10 : constant := 16#31#;
Tene0 : constant := 16#32#;
Tene1 : constant := 16#33#;
Tene2 : constant := 16#34#;
Tene4 : constant := 16#35#;
Tene8 : constant := 16#36#;
Tene16 : constant := 16#37#;
Tene32 : constant := 16#38#;
Tene64 : constant := 16#39#;
Tene128 : constant := 16#3A#;
Tene256 : constant := 16#3B#;
Tene512 : constant := 16#3C#;
Tene1024 : constant := 16#3D#;
Tene2048 : constant := 16#3E#;
Tene4096 : constant := 16#3F#;
--
-- Addressing modes.
--
function W return Size renames Word;
function L return Size renames Long;
function Indr (Addr_Reg : Operand) return Operand;
-- Assembler Notation:
-- (An)
--
-- Description:
-- The address of the operand is in the address register specified
-- by the register field.
function Incr (Addr_Reg : Operand) return Operand;
-- Assembler Notation:
-- (An)+
--
-- Description:
-- The address of the operand is in the address register specified
-- by the register field. After the operand address is used, it is
-- incremented by one, two, or four depending upon whether the size
-- of the operand is byte, word, or long word. If the address register
-- is the stack pointer and the operand size is byte, the address is
-- incremented by two rather than one to keep the stack pointer on a
-- word boundary.
function Decr (Addr_Reg : Operand) return Operand;
-- Assembler Notation:
-- -(An)
--
-- Description:
-- The address of the operand is in the address register specified
-- by the register field. Before the operand address is used, it is
-- decremented by one, two, or four depending upon whether the size
-- of the operand is byte, word, or long word. If the address register
-- is the stack pointer and the operand size is byte, the address is
-- decremented by two rather than one to keep the stack pointer on a
-- word boundary.
function Disp (Reg : Operand; Int : Integer) return Operand;
function Disp (Reg : Operand; Lab : Operand) return Operand;
-- Assembler Notation:
-- d(An)
-- d(PC)
--
-- Description:
-- The address of the operand is the sum of the address in the address
-- register or PC and the sign-extended 16-bit displacement.
function Index (Reg : Operand;
Int : Integer;
Index_Reg : Operand;
Index_Size : Size;
Scale : Integer := 1) return Operand;
function Index (Reg : Operand;
Lab : Operand;
Index_Reg : Operand;
Index_Size : Size;
Scale : Integer := 1) return Operand;
-- Assembler Notation:
-- d(An, Rn.SIZE*SCALE)
-- d(PC, Rn.SIZE*SCALE)
--
-- Description:
-- The address of the operand is the sum of the address in the address
-- register or PC, the 8-bit displacement, and the contents of the
-- index register (possibly scaled).
function Memory (Pre_Mem : Operand; Od : Integer := 0) return Operand;
-- Assembler Notation:
-- ([bd,An,Ri.SIZE{*SCALE}],od)
-- ([bd,PC,Ri.SIZE{*SCALE}],od)
--
-- Description:
-- The address of the operand is the sum of the pre_mem and a sign-
-- extended outer displacement value od. pre_mem is the sum of the
-- contents of the address register An (or ZAn), the base displacement,
-- and the contents of the index register Ri (or ZRi).
function Memory (Post_Mem : Operand;
Index_Reg : Operand;
Index_Size : Size;
Scale : Integer := 1;
Od : Integer := 0) return Operand;
-- Assembler Notation:
-- ([bd,An],od,Ri.SIZE{*SCALE})
-- ([bd,PC],od,Ri.SIZE{*SCALE})
--
-- Description:
-- The address of the operand is the sum of the post_mem, the contents
-- of the index register Ri (or ZRi), and the outer displacement value
-- od. post_mem is the sum of the base displacement and the contents
-- of the the base register An (or ZAn).
function Absol (Addr : Integer; Addr_Size : Size) return Operand;
-- Assembler Notation:
-- xxx.W
-- xxx.L
--
-- Description:
-- The address of the operand is given.
function Immed (Val : Integer) return Operand;
function Immed (Val : Float) return Operand;
function Immed (Val : Character) return Operand;
function "+" (Right : Integer) return Operand;
function "-" (Right : Integer) return Operand;
function "+" (Right : Float) return Operand;
function "-" (Right : Float) return Operand;
function "/" (Left : Operand; Right : Operand) return Operand;
-- Assembler Notation:
-- <list>
--
-- Description:
-- A list of any combination of registers to form a mask.
-- May only be used in the 'movem' and 'fmovem' instructions.
function Ext (Name : String; Disp : Integer := 0) return Operand;
-- Assembler Notation:
-- name
--
-- Description:
-- The name denotes an external symbol. The displacement is added to
-- the value of name.
function "-" (Left, Right : Operand) return Operand;
-- Description:
-- Calculates the difference between two labels.
private
--
-- Implementation specific.
--
for Size use (Byte => 8, Word => 16, Long => 32);
type Operand is new Integer;
D0 : constant Operand := 0;
D1 : constant Operand := 1;
D2 : constant Operand := 2;
D3 : constant Operand := 3;
D4 : constant Operand := 4;
D5 : constant Operand := 5;
D6 : constant Operand := 6;
D7 : constant Operand := 7;
A0 : constant Operand := 8;
A1 : constant Operand := 9;
A2 : constant Operand := 10;
A3 : constant Operand := 11;
A4 : constant Operand := 12;
A5 : constant Operand := 13;
A6 : constant Operand := 14;
A7 : constant Operand := 15;
Sp : constant Operand := A7;
Fp0 : constant Operand := 16;
Fp1 : constant Operand := 17;
Fp2 : constant Operand := 18;
Fp3 : constant Operand := 19;
Fp4 : constant Operand := 20;
Fp5 : constant Operand := 21;
Fp6 : constant Operand := 22;
Fp7 : constant Operand := 23;
Pc : constant Operand := 24;
Sr : constant Operand := 25;
Ccr : constant Operand := 26;
Sfc : constant Operand := 27;
Dfc : constant Operand := 28;
Cacr : constant Operand := 29;
Usp : constant Operand := 30;
Vbr : constant Operand := 31;
Caar : constant Operand := 32;
Msp : constant Operand := 33;
Isp : constant Operand := 34;
Fpcr : constant Operand := 35;
Fpsr : constant Operand := 36;
Fpiar : constant Operand := 37;
Zd0 : constant Operand := 38;
Zd1 : constant Operand := 38;
Zd2 : constant Operand := 38;
Zd3 : constant Operand := 38;
Zd4 : constant Operand := 38;
Zd5 : constant Operand := 38;
Zd6 : constant Operand := 38;
Zd7 : constant Operand := 38;
Za0 : constant Operand := 38;
Za1 : constant Operand := 38;
Za2 : constant Operand := 38;
Za3 : constant Operand := 38;
Za4 : constant Operand := 38;
Za5 : constant Operand := 38;
Za6 : constant Operand := 38;
Za7 : constant Operand := 38;
Zpc : constant Operand := 39;
Crp : constant Operand := 40;
Drp : constant Operand := 41;
Srp : constant Operand := 42;
Tc : constant Operand := 43;
Pcsr : constant Operand := 44;
Psr : constant Operand := 45;
Cal : constant Operand := 46;
Val : constant Operand := 47;
Sccr : constant Operand := 48;
Ac : constant Operand := 49;
Bad0 : constant Operand := 50;
Bad1 : constant Operand := 51;
Bad2 : constant Operand := 52;
Bad3 : constant Operand := 53;
Bad4 : constant Operand := 54;
Bad5 : constant Operand := 55;
Bad6 : constant Operand := 56;
Bad7 : constant Operand := 57;
Bac0 : constant Operand := 58;
Bac1 : constant Operand := 59;
Bac2 : constant Operand := 60;
Bac3 : constant Operand := 61;
Bac4 : constant Operand := 62;
Bac5 : constant Operand := 63;
Bac6 : constant Operand := 64;
Bac7 : constant Operand := 65;
Tt0 : constant Operand := 66;
Tt1 : constant Operand := 67;
Itt0 : constant Operand := 68;
Itt1 : constant Operand := 69;
Dtt0 : constant Operand := 70;
Dtt1 : constant Operand := 71;
Urp : constant Operand := 72;
Mmusr : constant Operand := 73;
Nc : constant Operand := 76; -- MC68040 CINV/CPUSH no cache
Dc : constant Operand := 77; -- MC68040 CINV/CPUSH data cache
Ic : constant Operand := 78; -- MC68040 CINV/CPUSH instruction cache
Bc : constant Operand := 79; -- MC68040 CINV/CPUSH data & instruction cache
end Machine_Code;
pragma Built_In (Machine_Code);