Merge pull request #5392 from 68bit/68bit-mc68hc11-more-insts

mc68hc11 - implement more of the instructions.
This commit is contained in:
ajrhacker 2019-07-25 13:11:55 -04:00 committed by GitHub
commit 9330baa421
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 819 additions and 165 deletions

View File

@ -45,21 +45,21 @@ const mc68hc11_cpu_device::hc11_opcode_list_struct mc68hc11_cpu_device::hc11_opc
{ 0, 0x48, &HC11OP(asla) },
{ 0, 0x58, &HC11OP(aslb) },
{ 0, 0x78, &HC11OP(asl_ext) },
// { 0, 0x68, &HC11OP(asl_indx) },
// { 0x18, 0x68, &HC11OP(asl_indy) },
// { 0, 0x47, &HC11OP(asra) },
// { 0, 0x57, &HC11OP(asrb) },
// { 0, 0x77, &HC11OP(asr_ext) },
// { 0, 0x67, &HC11OP(asr_indx) },
// { 0x18, 0x67, &HC11OP(asr_indy) },
{ 0, 0x68, &HC11OP(asl_indx) },
{ 0x18, 0x68, &HC11OP(asl_indy) },
{ 0, 0x47, &HC11OP(asra) },
{ 0, 0x57, &HC11OP(asrb) },
{ 0, 0x77, &HC11OP(asr_ext) },
{ 0, 0x67, &HC11OP(asr_indx) },
{ 0x18, 0x67, &HC11OP(asr_indy) },
{ 0, 0x24, &HC11OP(bcc) },
{ 0, 0x15, &HC11OP(bclr_dir) },
{ 0, 0x1d, &HC11OP(bclr_indx) },
// { 0x18, 0x1d, &HC11OP(bclr_indy) },
{ 0x18, 0x1d, &HC11OP(bclr_indy) },
{ 0, 0x25, &HC11OP(bcs) },
{ 0, 0x27, &HC11OP(beq) },
// { 0, 0x2c, &HC11OP(bge) },
// { 0, 0x2e, &HC11OP(bgt) },
{ 0, 0x2c, &HC11OP(bge) },
{ 0, 0x2e, &HC11OP(bgt) },
{ 0, 0x22, &HC11OP(bhi) },
{ 0, 0x85, &HC11OP(bita_imm) },
{ 0, 0x95, &HC11OP(bita_dir) },
@ -73,21 +73,21 @@ const mc68hc11_cpu_device::hc11_opcode_list_struct mc68hc11_cpu_device::hc11_opc
{ 0x18, 0xe5, &HC11OP(bitb_indy) },
{ 0, 0x2f, &HC11OP(ble) },
{ 0, 0x23, &HC11OP(bls) },
// { 0, 0x2d, &HC11OP(blt) },
{ 0, 0x2d, &HC11OP(blt) },
{ 0, 0x2b, &HC11OP(bmi) },
{ 0, 0x26, &HC11OP(bne) },
{ 0, 0x2a, &HC11OP(bpl) },
{ 0, 0x20, &HC11OP(bra) },
{ 0, 0x13, &HC11OP(brclr_dir) },
{ 0, 0x1f, &HC11OP(brclr_indx) },
// { 0x18, 0x1f, &HC11OP(brclr_indy) },
{ 0x18, 0x1f, &HC11OP(brclr_indy) },
{ 0, 0x21, &HC11OP(brn) },
{ 0, 0x12, &HC11OP(brset_dir) },
{ 0, 0x1e, &HC11OP(brset_indx) },
// { 0x18, 0x1e, &HC11OP(brset_indy) },
{ 0x18, 0x1e, &HC11OP(brset_indy) },
{ 0, 0x14, &HC11OP(bset_dir) },
{ 0, 0x1c, &HC11OP(bset_indx) },
// { 0x18, 0x1c, &HC11OP(bset_indy) },
{ 0x18, 0x1c, &HC11OP(bset_indy) },
{ 0, 0x8d, &HC11OP(bsr) },
{ 0, 0x28, &HC11OP(bvc) },
{ 0, 0x29, &HC11OP(bvs) },
@ -112,9 +112,9 @@ const mc68hc11_cpu_device::hc11_opcode_list_struct mc68hc11_cpu_device::hc11_opc
{ 0x18, 0xe1, &HC11OP(cmpb_indy) },
{ 0, 0x43, &HC11OP(coma) },
{ 0, 0x53, &HC11OP(comb) },
// { 0, 0x73, &HC11OP(com_ext) },
// { 0, 0x63, &HC11OP(com_indx) },
// { 0x18, 0x63, &HC11OP(com_indy) },
{ 0, 0x73, &HC11OP(com_ext) },
{ 0, 0x63, &HC11OP(com_indx) },
{ 0x18, 0x63, &HC11OP(com_indy) },
{ 0x1a, 0x83, &HC11OP(cpd_imm) },
{ 0x1a, 0x93, &HC11OP(cpd_dir) },
{ 0x1a, 0xb3, &HC11OP(cpd_ext) },
@ -130,13 +130,13 @@ const mc68hc11_cpu_device::hc11_opcode_list_struct mc68hc11_cpu_device::hc11_opc
{ 0x18, 0xbc, &HC11OP(cpy_ext) },
{ 0x1a, 0xac, &HC11OP(cpy_indx) },
{ 0x18, 0xac, &HC11OP(cpy_indy) },
// { 0, 0x19, &HC11OP(daa) },
{ 0, 0x19, &HC11OP(daa) },
{ 0, 0x4a, &HC11OP(deca) },
{ 0, 0x5a, &HC11OP(decb) },
{ 0, 0x7a, &HC11OP(dec_ext) },
{ 0, 0x6a, &HC11OP(dec_indx) },
{ 0x18, 0x6a, &HC11OP(dec_indy) },
// { 0, 0x34, &HC11OP(des) },
{ 0, 0x34, &HC11OP(des) },
{ 0, 0x09, &HC11OP(dex) },
{ 0x18, 0x09, &HC11OP(dey) },
{ 0, 0x88, &HC11OP(eora_imm) },
@ -156,7 +156,7 @@ const mc68hc11_cpu_device::hc11_opcode_list_struct mc68hc11_cpu_device::hc11_opc
{ 0, 0x7c, &HC11OP(inc_ext) },
{ 0, 0x6c, &HC11OP(inc_indx) },
{ 0x18, 0x6c, &HC11OP(inc_indy) },
// { 0, 0x31, &HC11OP(ins) },
{ 0, 0x31, &HC11OP(ins) },
{ 0, 0x08, &HC11OP(inx) },
{ 0x18, 0x08, &HC11OP(iny) },
{ 0, 0x7e, &HC11OP(jmp_ext) },
@ -199,9 +199,9 @@ const mc68hc11_cpu_device::hc11_opcode_list_struct mc68hc11_cpu_device::hc11_opc
{ 0, 0x05, &HC11OP(lsld) },
{ 0, 0x44, &HC11OP(lsra) },
{ 0, 0x54, &HC11OP(lsrb) },
// { 0, 0x74, &HC11OP(lsr_ext) },
// { 0, 0x64, &HC11OP(lsr_indx) },
// { 0x18, 0x64, &HC11OP(lsr_indy) },
{ 0, 0x74, &HC11OP(lsr_ext) },
{ 0, 0x64, &HC11OP(lsr_indx) },
{ 0x18, 0x64, &HC11OP(lsr_indy) },
{ 0, 0x04, &HC11OP(lsrd) },
{ 0, 0x3d, &HC11OP(mul) },
{ 0, 0x40, &HC11OP(nega) },
@ -235,20 +235,20 @@ const mc68hc11_cpu_device::hc11_opcode_list_struct mc68hc11_cpu_device::hc11_opc
{ 0x18, 0x69, &HC11OP(rol_indy) },
{ 0, 0x46, &HC11OP(rora) },
{ 0, 0x56, &HC11OP(rorb) },
// { 0, 0x76, &HC11OP(ror_ext) },
// { 0, 0x66, &HC11OP(ror_indx) },
// { 0x18, 0x66, &HC11OP(ror_indy) },
{ 0, 0x76, &HC11OP(ror_ext) },
{ 0, 0x66, &HC11OP(ror_indx) },
{ 0x18, 0x66, &HC11OP(ror_indy) },
{ 0, 0x3b, &HC11OP(rti) },
{ 0, 0x39, &HC11OP(rts) },
{ 0, 0x10, &HC11OP(sba) },
{ 0, 0x82, &HC11OP(sbca_imm) },
// { 0, 0x92, &HC11OP(sbca_dir) },
// { 0, 0xb2, &HC11OP(sbca_ext) },
{ 0, 0x92, &HC11OP(sbca_dir) },
{ 0, 0xb2, &HC11OP(sbca_ext) },
{ 0, 0xa2, &HC11OP(sbca_indx) },
{ 0x18, 0xa2, &HC11OP(sbca_indy) },
{ 0, 0xc2, &HC11OP(sbcb_imm) },
// { 0, 0xd2, &HC11OP(sbcb_dir) },
// { 0, 0xf2, &HC11OP(sbcb_ext) },
{ 0, 0xd2, &HC11OP(sbcb_dir) },
{ 0, 0xf2, &HC11OP(sbcb_ext) },
{ 0, 0xe2, &HC11OP(sbcb_indx) },
{ 0x18, 0xe2, &HC11OP(sbcb_indy) },
{ 0, 0x0d, &HC11OP(sec) },
@ -267,9 +267,9 @@ const mc68hc11_cpu_device::hc11_opcode_list_struct mc68hc11_cpu_device::hc11_opc
{ 0, 0xed, &HC11OP(std_indx) },
{ 0x18, 0xed, &HC11OP(std_indy) },
{ 0, 0x9f, &HC11OP(sts_dir) },
// { 0, 0xbf, &HC11OP(sts_ext) },
// { 0, 0xaf, &HC11OP(sts_indx) },
// { 0x18, 0xaf, &HC11OP(sts_indy) },
{ 0, 0xbf, &HC11OP(sts_ext) },
{ 0, 0xaf, &HC11OP(sts_indx) },
{ 0x18, 0xaf, &HC11OP(sts_indy) },
{ 0, 0xdf, &HC11OP(stx_dir) },
{ 0, 0xff, &HC11OP(stx_ext) },
{ 0, 0xef, &HC11OP(stx_indx) },

File diff suppressed because it is too large Load Diff

View File

@ -192,6 +192,13 @@ private:
void hc11_asla();
void hc11_aslb();
void hc11_asl_ext();
void hc11_asl_indx();
void hc11_asl_indy();
void hc11_asra();
void hc11_asrb();
void hc11_asr_ext();
void hc11_asr_indx();
void hc11_asr_indy();
void hc11_bita_imm();
void hc11_bita_dir();
void hc11_bita_ext();
@ -205,22 +212,29 @@ private:
void hc11_bcc();
void hc11_bclr_dir();
void hc11_bclr_indx();
void hc11_bclr_indy();
void hc11_bcs();
void hc11_beq();
void hc11_bge();
void hc11_bgt();
void hc11_bhi();
void hc11_bne();
void hc11_ble();
void hc11_bls();
void hc11_blt();
void hc11_bmi();
void hc11_bpl();
void hc11_bra();
void hc11_brclr_dir();
void hc11_brclr_indx();
void hc11_brclr_indy();
void hc11_brset_dir();
void hc11_brset_indx();
void hc11_brset_indy();
void hc11_brn();
void hc11_bset_dir();
void hc11_bset_indx();
void hc11_bset_indy();
void hc11_bsr();
void hc11_bvc();
void hc11_bvs();
@ -243,6 +257,9 @@ private:
void hc11_cmpb_ext();
void hc11_cmpb_indx();
void hc11_cmpb_indy();
void hc11_com_ext();
void hc11_com_indx();
void hc11_com_indy();
void hc11_coma();
void hc11_comb();
void hc11_cpd_imm();
@ -260,11 +277,13 @@ private:
void hc11_cpy_ext();
void hc11_cpy_indx();
void hc11_cpy_indy();
void hc11_daa();
void hc11_deca();
void hc11_decb();
void hc11_dec_ext();
void hc11_dec_indx();
void hc11_dec_indy();
void hc11_des();
void hc11_dex();
void hc11_dey();
void hc11_eora_imm();
@ -283,6 +302,7 @@ private:
void hc11_inc_ext();
void hc11_inc_indx();
void hc11_inc_indy();
void hc11_ins();
void hc11_inx();
void hc11_iny();
void hc11_jmp_indx();
@ -325,6 +345,9 @@ private:
void hc11_lsld();
void hc11_lsra();
void hc11_lsrb();
void hc11_lsr_ext();
void hc11_lsr_indx();
void hc11_lsr_indy();
void hc11_lsrd();
void hc11_mul();
void hc11_nega();
@ -358,13 +381,20 @@ private:
void hc11_rol_indy();
void hc11_rora();
void hc11_rorb();
void hc11_ror_ext();
void hc11_ror_indx();
void hc11_ror_indy();
void hc11_rti();
void hc11_rts();
void hc11_sba();
void hc11_sbca_imm();
void hc11_sbca_dir();
void hc11_sbca_ext();
void hc11_sbca_indx();
void hc11_sbca_indy();
void hc11_sbcb_imm();
void hc11_sbcb_dir();
void hc11_sbcb_ext();
void hc11_sbcb_indx();
void hc11_sbcb_indy();
void hc11_sec();
@ -383,6 +413,9 @@ private:
void hc11_std_indx();
void hc11_std_indy();
void hc11_sts_dir();
void hc11_sts_ext();
void hc11_sts_indx();
void hc11_sts_indy();
void hc11_stx_dir();
void hc11_stx_ext();
void hc11_stx_indx();