diff --git a/.gitattributes b/.gitattributes index cda3efc07ff..30f21cabdaa 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1059,7 +1059,6 @@ src/emu/cpu/h6280/6280dasm.c svneol=native#text/plain src/emu/cpu/h6280/h6280.c svneol=native#text/plain src/emu/cpu/h6280/h6280.h svneol=native#text/plain src/emu/cpu/h6280/h6280ops.h svneol=native#text/plain -src/emu/cpu/h6280/tblh6280.inc svneol=native#text/plain src/emu/cpu/h83002/h8.h svneol=native#text/plain src/emu/cpu/h83002/h8_16.c svneol=native#text/plain src/emu/cpu/h83002/h8_8.c svneol=native#text/plain diff --git a/src/emu/cpu/h6280/h6280.c b/src/emu/cpu/h6280/h6280.c index de7105f0151..a7568f5c58b 100644 --- a/src/emu/cpu/h6280/h6280.c +++ b/src/emu/cpu/h6280/h6280.c @@ -112,6 +112,9 @@ #include "debugger.h" #include "h6280.h" +// include the macros +#include "h6280ops.h" + //static void set_irq_line(h6280_Regs* cpustate, int irqline, int state); //************************************************************************** @@ -137,38 +140,38 @@ h6280_device::h6280_device(const machine_config &mconfig, const char *tag, devic const h6280_device::ophandler h6280_device::s_opcodetable[256] = { - &h6280_device::op_000, &h6280_device::op_001, &h6280_device::op_002, &h6280_device::op_003, &h6280_device::op_004, &h6280_device::op_005, &h6280_device::op_006, &h6280_device::op_007, - &h6280_device::op_008, &h6280_device::op_009, &h6280_device::op_00a, &h6280_device::op_00b, &h6280_device::op_00c, &h6280_device::op_00d, &h6280_device::op_00e, &h6280_device::op_00f, - &h6280_device::op_010, &h6280_device::op_011, &h6280_device::op_012, &h6280_device::op_013, &h6280_device::op_014, &h6280_device::op_015, &h6280_device::op_016, &h6280_device::op_017, - &h6280_device::op_018, &h6280_device::op_019, &h6280_device::op_01a, &h6280_device::op_01b, &h6280_device::op_01c, &h6280_device::op_01d, &h6280_device::op_01e, &h6280_device::op_01f, - &h6280_device::op_020, &h6280_device::op_021, &h6280_device::op_022, &h6280_device::op_023, &h6280_device::op_024, &h6280_device::op_025, &h6280_device::op_026, &h6280_device::op_027, - &h6280_device::op_028, &h6280_device::op_029, &h6280_device::op_02a, &h6280_device::op_02b, &h6280_device::op_02c, &h6280_device::op_02d, &h6280_device::op_02e, &h6280_device::op_02f, - &h6280_device::op_030, &h6280_device::op_031, &h6280_device::op_032, &h6280_device::op_033, &h6280_device::op_034, &h6280_device::op_035, &h6280_device::op_036, &h6280_device::op_037, - &h6280_device::op_038, &h6280_device::op_039, &h6280_device::op_03a, &h6280_device::op_03b, &h6280_device::op_03c, &h6280_device::op_03d, &h6280_device::op_03e, &h6280_device::op_03f, - &h6280_device::op_040, &h6280_device::op_041, &h6280_device::op_042, &h6280_device::op_043, &h6280_device::op_044, &h6280_device::op_045, &h6280_device::op_046, &h6280_device::op_047, - &h6280_device::op_048, &h6280_device::op_049, &h6280_device::op_04a, &h6280_device::op_04b, &h6280_device::op_04c, &h6280_device::op_04d, &h6280_device::op_04e, &h6280_device::op_04f, - &h6280_device::op_050, &h6280_device::op_051, &h6280_device::op_052, &h6280_device::op_053, &h6280_device::op_054, &h6280_device::op_055, &h6280_device::op_056, &h6280_device::op_057, - &h6280_device::op_058, &h6280_device::op_059, &h6280_device::op_05a, &h6280_device::op_05b, &h6280_device::op_05c, &h6280_device::op_05d, &h6280_device::op_05e, &h6280_device::op_05f, - &h6280_device::op_060, &h6280_device::op_061, &h6280_device::op_062, &h6280_device::op_063, &h6280_device::op_064, &h6280_device::op_065, &h6280_device::op_066, &h6280_device::op_067, - &h6280_device::op_068, &h6280_device::op_069, &h6280_device::op_06a, &h6280_device::op_06b, &h6280_device::op_06c, &h6280_device::op_06d, &h6280_device::op_06e, &h6280_device::op_06f, - &h6280_device::op_070, &h6280_device::op_071, &h6280_device::op_072, &h6280_device::op_073, &h6280_device::op_074, &h6280_device::op_075, &h6280_device::op_076, &h6280_device::op_077, - &h6280_device::op_078, &h6280_device::op_079, &h6280_device::op_07a, &h6280_device::op_07b, &h6280_device::op_07c, &h6280_device::op_07d, &h6280_device::op_07e, &h6280_device::op_07f, - &h6280_device::op_080, &h6280_device::op_081, &h6280_device::op_082, &h6280_device::op_083, &h6280_device::op_084, &h6280_device::op_085, &h6280_device::op_086, &h6280_device::op_087, - &h6280_device::op_088, &h6280_device::op_089, &h6280_device::op_08a, &h6280_device::op_08b, &h6280_device::op_08c, &h6280_device::op_08d, &h6280_device::op_08e, &h6280_device::op_08f, - &h6280_device::op_090, &h6280_device::op_091, &h6280_device::op_092, &h6280_device::op_093, &h6280_device::op_094, &h6280_device::op_095, &h6280_device::op_096, &h6280_device::op_097, - &h6280_device::op_098, &h6280_device::op_099, &h6280_device::op_09a, &h6280_device::op_09b, &h6280_device::op_09c, &h6280_device::op_09d, &h6280_device::op_09e, &h6280_device::op_09f, - &h6280_device::op_0a0, &h6280_device::op_0a1, &h6280_device::op_0a2, &h6280_device::op_0a3, &h6280_device::op_0a4, &h6280_device::op_0a5, &h6280_device::op_0a6, &h6280_device::op_0a7, - &h6280_device::op_0a8, &h6280_device::op_0a9, &h6280_device::op_0aa, &h6280_device::op_0ab, &h6280_device::op_0ac, &h6280_device::op_0ad, &h6280_device::op_0ae, &h6280_device::op_0af, - &h6280_device::op_0b0, &h6280_device::op_0b1, &h6280_device::op_0b2, &h6280_device::op_0b3, &h6280_device::op_0b4, &h6280_device::op_0b5, &h6280_device::op_0b6, &h6280_device::op_0b7, - &h6280_device::op_0b8, &h6280_device::op_0b9, &h6280_device::op_0ba, &h6280_device::op_0bb, &h6280_device::op_0bc, &h6280_device::op_0bd, &h6280_device::op_0be, &h6280_device::op_0bf, - &h6280_device::op_0c0, &h6280_device::op_0c1, &h6280_device::op_0c2, &h6280_device::op_0c3, &h6280_device::op_0c4, &h6280_device::op_0c5, &h6280_device::op_0c6, &h6280_device::op_0c7, - &h6280_device::op_0c8, &h6280_device::op_0c9, &h6280_device::op_0ca, &h6280_device::op_0cb, &h6280_device::op_0cc, &h6280_device::op_0cd, &h6280_device::op_0ce, &h6280_device::op_0cf, - &h6280_device::op_0d0, &h6280_device::op_0d1, &h6280_device::op_0d2, &h6280_device::op_0d3, &h6280_device::op_0d4, &h6280_device::op_0d5, &h6280_device::op_0d6, &h6280_device::op_0d7, - &h6280_device::op_0d8, &h6280_device::op_0d9, &h6280_device::op_0da, &h6280_device::op_0db, &h6280_device::op_0dc, &h6280_device::op_0dd, &h6280_device::op_0de, &h6280_device::op_0df, - &h6280_device::op_0e0, &h6280_device::op_0e1, &h6280_device::op_0e2, &h6280_device::op_0e3, &h6280_device::op_0e4, &h6280_device::op_0e5, &h6280_device::op_0e6, &h6280_device::op_0e7, - &h6280_device::op_0e8, &h6280_device::op_0e9, &h6280_device::op_0ea, &h6280_device::op_0eb, &h6280_device::op_0ec, &h6280_device::op_0ed, &h6280_device::op_0ee, &h6280_device::op_0ef, - &h6280_device::op_0f0, &h6280_device::op_0f1, &h6280_device::op_0f2, &h6280_device::op_0f3, &h6280_device::op_0f4, &h6280_device::op_0f5, &h6280_device::op_0f6, &h6280_device::op_0f7, - &h6280_device::op_0f8, &h6280_device::op_0f9, &h6280_device::op_0fa, &h6280_device::op_0fb, &h6280_device::op_0fc, &h6280_device::op_0fd, &h6280_device::op_0fe, &h6280_device::op_0ff + &h6280_device::op_00, &h6280_device::op_01, &h6280_device::op_02, &h6280_device::op_03, &h6280_device::op_04, &h6280_device::op_05, &h6280_device::op_06, &h6280_device::op_07, + &h6280_device::op_08, &h6280_device::op_09, &h6280_device::op_0a, &h6280_device::op_0b, &h6280_device::op_0c, &h6280_device::op_0d, &h6280_device::op_0e, &h6280_device::op_0f, + &h6280_device::op_10, &h6280_device::op_11, &h6280_device::op_12, &h6280_device::op_13, &h6280_device::op_14, &h6280_device::op_15, &h6280_device::op_16, &h6280_device::op_17, + &h6280_device::op_18, &h6280_device::op_19, &h6280_device::op_1a, &h6280_device::op_1b, &h6280_device::op_1c, &h6280_device::op_1d, &h6280_device::op_1e, &h6280_device::op_1f, + &h6280_device::op_20, &h6280_device::op_21, &h6280_device::op_22, &h6280_device::op_23, &h6280_device::op_24, &h6280_device::op_25, &h6280_device::op_26, &h6280_device::op_27, + &h6280_device::op_28, &h6280_device::op_29, &h6280_device::op_2a, &h6280_device::op_2b, &h6280_device::op_2c, &h6280_device::op_2d, &h6280_device::op_2e, &h6280_device::op_2f, + &h6280_device::op_30, &h6280_device::op_31, &h6280_device::op_32, &h6280_device::op_33, &h6280_device::op_34, &h6280_device::op_35, &h6280_device::op_36, &h6280_device::op_37, + &h6280_device::op_38, &h6280_device::op_39, &h6280_device::op_3a, &h6280_device::op_3b, &h6280_device::op_3c, &h6280_device::op_3d, &h6280_device::op_3e, &h6280_device::op_3f, + &h6280_device::op_40, &h6280_device::op_41, &h6280_device::op_42, &h6280_device::op_43, &h6280_device::op_44, &h6280_device::op_45, &h6280_device::op_46, &h6280_device::op_47, + &h6280_device::op_48, &h6280_device::op_49, &h6280_device::op_4a, &h6280_device::op_4b, &h6280_device::op_4c, &h6280_device::op_4d, &h6280_device::op_4e, &h6280_device::op_4f, + &h6280_device::op_50, &h6280_device::op_51, &h6280_device::op_52, &h6280_device::op_53, &h6280_device::op_54, &h6280_device::op_55, &h6280_device::op_56, &h6280_device::op_57, + &h6280_device::op_58, &h6280_device::op_59, &h6280_device::op_5a, &h6280_device::op_5b, &h6280_device::op_5c, &h6280_device::op_5d, &h6280_device::op_5e, &h6280_device::op_5f, + &h6280_device::op_60, &h6280_device::op_61, &h6280_device::op_62, &h6280_device::op_63, &h6280_device::op_64, &h6280_device::op_65, &h6280_device::op_66, &h6280_device::op_67, + &h6280_device::op_68, &h6280_device::op_69, &h6280_device::op_6a, &h6280_device::op_6b, &h6280_device::op_6c, &h6280_device::op_6d, &h6280_device::op_6e, &h6280_device::op_6f, + &h6280_device::op_70, &h6280_device::op_71, &h6280_device::op_72, &h6280_device::op_73, &h6280_device::op_74, &h6280_device::op_75, &h6280_device::op_76, &h6280_device::op_77, + &h6280_device::op_78, &h6280_device::op_79, &h6280_device::op_7a, &h6280_device::op_7b, &h6280_device::op_7c, &h6280_device::op_7d, &h6280_device::op_7e, &h6280_device::op_7f, + &h6280_device::op_80, &h6280_device::op_81, &h6280_device::op_82, &h6280_device::op_83, &h6280_device::op_84, &h6280_device::op_85, &h6280_device::op_86, &h6280_device::op_87, + &h6280_device::op_88, &h6280_device::op_89, &h6280_device::op_8a, &h6280_device::op_8b, &h6280_device::op_8c, &h6280_device::op_8d, &h6280_device::op_8e, &h6280_device::op_8f, + &h6280_device::op_90, &h6280_device::op_91, &h6280_device::op_92, &h6280_device::op_93, &h6280_device::op_94, &h6280_device::op_95, &h6280_device::op_96, &h6280_device::op_97, + &h6280_device::op_98, &h6280_device::op_99, &h6280_device::op_9a, &h6280_device::op_9b, &h6280_device::op_9c, &h6280_device::op_9d, &h6280_device::op_9e, &h6280_device::op_9f, + &h6280_device::op_a0, &h6280_device::op_a1, &h6280_device::op_a2, &h6280_device::op_a3, &h6280_device::op_a4, &h6280_device::op_a5, &h6280_device::op_a6, &h6280_device::op_a7, + &h6280_device::op_a8, &h6280_device::op_a9, &h6280_device::op_aa, &h6280_device::op_ab, &h6280_device::op_ac, &h6280_device::op_ad, &h6280_device::op_ae, &h6280_device::op_af, + &h6280_device::op_b0, &h6280_device::op_b1, &h6280_device::op_b2, &h6280_device::op_b3, &h6280_device::op_b4, &h6280_device::op_b5, &h6280_device::op_b6, &h6280_device::op_b7, + &h6280_device::op_b8, &h6280_device::op_b9, &h6280_device::op_ba, &h6280_device::op_bb, &h6280_device::op_bc, &h6280_device::op_bd, &h6280_device::op_be, &h6280_device::op_bf, + &h6280_device::op_c0, &h6280_device::op_c1, &h6280_device::op_c2, &h6280_device::op_c3, &h6280_device::op_c4, &h6280_device::op_c5, &h6280_device::op_c6, &h6280_device::op_c7, + &h6280_device::op_c8, &h6280_device::op_c9, &h6280_device::op_ca, &h6280_device::op_cb, &h6280_device::op_cc, &h6280_device::op_cd, &h6280_device::op_ce, &h6280_device::op_cf, + &h6280_device::op_d0, &h6280_device::op_d1, &h6280_device::op_d2, &h6280_device::op_d3, &h6280_device::op_d4, &h6280_device::op_d5, &h6280_device::op_d6, &h6280_device::op_d7, + &h6280_device::op_d8, &h6280_device::op_d9, &h6280_device::op_da, &h6280_device::op_db, &h6280_device::op_dc, &h6280_device::op_dd, &h6280_device::op_de, &h6280_device::op_df, + &h6280_device::op_e0, &h6280_device::op_e1, &h6280_device::op_e2, &h6280_device::op_e3, &h6280_device::op_e4, &h6280_device::op_e5, &h6280_device::op_e6, &h6280_device::op_e7, + &h6280_device::op_e8, &h6280_device::op_e9, &h6280_device::op_ea, &h6280_device::op_eb, &h6280_device::op_ec, &h6280_device::op_ed, &h6280_device::op_ee, &h6280_device::op_ef, + &h6280_device::op_f0, &h6280_device::op_f1, &h6280_device::op_f2, &h6280_device::op_f3, &h6280_device::op_f4, &h6280_device::op_f5, &h6280_device::op_f6, &h6280_device::op_f7, + &h6280_device::op_f8, &h6280_device::op_f9, &h6280_device::op_fa, &h6280_device::op_fb, &h6280_device::op_fc, &h6280_device::op_fd, &h6280_device::op_fe, &h6280_device::op_ff }; void h6280_device::device_start() @@ -305,6 +308,302 @@ const address_space_config *h6280_device::memory_space_config(address_spacenum s return NULL; } +#define OP(prefix,opcode) void h6280_device::prefix##_##opcode() + +/***************************************************************************** + ***************************************************************************** + * + * Hu6280 opcodes + * + ***************************************************************************** + * op temp cycles rdmem opc wrmem ******************/ +OP(op,00) { H6280_CYCLES(8); BRK; } // 8 BRK +OP(op,20) { H6280_CYCLES(7); EA_ABS; JSR; } // 7 JSR ABS +OP(op,40) { H6280_CYCLES(7); RTI; } // 7 RTI +OP(op,60) { H6280_CYCLES(7); RTS; } // 7 RTS +OP(op,80) { int tmp; BRA(1); } // 4 BRA REL +OP(op,a0) { int tmp; H6280_CYCLES(2); RD_IMM; LDY; } // 2 LDY IMM +OP(op,c0) { int tmp; H6280_CYCLES(2); RD_IMM; CPY; } // 2 CPY IMM +OP(op,e0) { int tmp; H6280_CYCLES(2); RD_IMM; CPX; } // 2 CPX IMM + +OP(op,10) { int tmp; BPL; } // 2/4 BPL REL +OP(op,30) { int tmp; BMI; } // 2/4 BMI REL +OP(op,50) { int tmp; BVC; } // 2/4 BVC REL +OP(op,70) { int tmp; BVS; } // 2/4 BVS REL +OP(op,90) { int tmp; BCC; } // 2/4 BCC REL +OP(op,b0) { int tmp; BCS; } // 2/4 BCS REL +OP(op,d0) { int tmp; BNE; } // 2/4 BNE REL +OP(op,f0) { int tmp; BEQ; } // 2/4 BEQ REL + +OP(op,01) { int tmp; H6280_CYCLES(7); RD_IDX; ORA; } // 7 ORA IDX +OP(op,21) { int tmp; H6280_CYCLES(7); RD_IDX; AND; } // 7 AND IDX +OP(op,41) { int tmp; H6280_CYCLES(7); RD_IDX; EOR; } // 7 EOR IDX +OP(op,61) { int tmp; H6280_CYCLES(7); RD_IDX; ADC; } // 7 ADC IDX +OP(op,81) { int tmp; H6280_CYCLES(7); STA; WR_IDX; } // 7 STA IDX +OP(op,a1) { int tmp; H6280_CYCLES(7); RD_IDX; LDA; } // 7 LDA IDX +OP(op,c1) { int tmp; H6280_CYCLES(7); RD_IDX; CMP; } // 7 CMP IDX +OP(op,e1) { int tmp; H6280_CYCLES(7); RD_IDX; SBC; } // 7 SBC IDX + +OP(op,11) { int tmp; H6280_CYCLES(7); RD_IDY; ORA; } // 7 ORA IDY +OP(op,31) { int tmp; H6280_CYCLES(7); RD_IDY; AND; } // 7 AND IDY +OP(op,51) { int tmp; H6280_CYCLES(7); RD_IDY; EOR; } // 7 EOR IDY +OP(op,71) { int tmp; H6280_CYCLES(7); RD_IDY; ADC; } // 7 ADC AZP +OP(op,91) { int tmp; H6280_CYCLES(7); STA; WR_IDY; } // 7 STA IDY +OP(op,b1) { int tmp; H6280_CYCLES(7); RD_IDY; LDA; } // 7 LDA IDY +OP(op,d1) { int tmp; H6280_CYCLES(7); RD_IDY; CMP; } // 7 CMP IDY +OP(op,f1) { int tmp; H6280_CYCLES(7); RD_IDY; SBC; } // 7 SBC IDY + +OP(op,02) { int tmp; H6280_CYCLES(3); SXY; } // 3 SXY +OP(op,22) { int tmp; H6280_CYCLES(3); SAX; } // 3 SAX +OP(op,42) { int tmp; H6280_CYCLES(3); SAY; } // 3 SAY +OP(op,62) { H6280_CYCLES(2); CLA; } // 2 CLA +OP(op,82) { H6280_CYCLES(2); CLX; } // 2 CLX +OP(op,a2) { int tmp; H6280_CYCLES(2); RD_IMM; LDX; } // 2 LDX IMM +OP(op,c2) { H6280_CYCLES(2); CLY; } // 2 CLY +OP(op,e2) { H6280_CYCLES(2); NOP; } // 2 NOP + +OP(op,12) { int tmp; H6280_CYCLES(7); RD_ZPI; ORA; } // 7 ORA ZPI +OP(op,32) { int tmp; H6280_CYCLES(7); RD_ZPI; AND; } // 7 AND ZPI +OP(op,52) { int tmp; H6280_CYCLES(7); RD_ZPI; EOR; } // 7 EOR ZPI +OP(op,72) { int tmp; H6280_CYCLES(7); RD_ZPI; ADC; } // 7 ADC ZPI +OP(op,92) { int tmp; H6280_CYCLES(7); STA; WR_ZPI; } // 7 STA ZPI +OP(op,b2) { int tmp; H6280_CYCLES(7); RD_ZPI; LDA; } // 7 LDA ZPI +OP(op,d2) { int tmp; H6280_CYCLES(7); RD_ZPI; CMP; } // 7 CMP ZPI +OP(op,f2) { int tmp; H6280_CYCLES(7); RD_ZPI; SBC; } // 7 SBC ZPI + +OP(op,03) { int tmp; H6280_CYCLES(5); RD_IMM; ST0; } // 4 + 1 penalty cycle ST0 IMM +OP(op,23) { int tmp; H6280_CYCLES(5); RD_IMM; ST2; } // 4 + 1 penalty cycle ST2 IMM +OP(op,43) { int tmp; H6280_CYCLES(4); RD_IMM; TMA; } // 4 TMA +OP(op,63) { H6280_CYCLES(4); NOP; } // 2 NOP +OP(op,83) { int tmp,tmp2; H6280_CYCLES(7); RD_IMM2; RD_ZPG; TST; } // 7 TST IMM,ZPG +OP(op,a3) { int tmp,tmp2; H6280_CYCLES(7); RD_IMM2; RD_ZPX; TST; } // 7 TST IMM,ZPX +OP(op,c3) { int to,from,length; TDD; } // 6*l+17 TDD XFER +OP(op,e3) { int to,from,length,alternate; TIA; } // 6*l+17 TIA XFER + +OP(op,13) { int tmp; H6280_CYCLES(5); RD_IMM; ST1; } // 4 + 1 penalty cycle ST1 +OP(op,33) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,53) { int tmp; H6280_CYCLES(5); RD_IMM; TAM; } // 5 TAM IMM +OP(op,73) { int to,from,length; TII; } // 6*l+17 TII XFER +OP(op,93) { int tmp,tmp2; H6280_CYCLES(8); RD_IMM2; RD_ABS; TST; } // 8 TST IMM,ABS +OP(op,b3) { int tmp,tmp2; H6280_CYCLES(8); RD_IMM2; RD_ABX; TST; } // 8 TST IMM,ABX +OP(op,d3) { int to,from,length; TIN; } // 6*l+17 TIN XFER +OP(op,f3) { int to,from,length,alternate; TAI; } // 6*l+17 TAI XFER + +OP(op,04) { int tmp; H6280_CYCLES(6); RD_ZPG; TSB; WB_EAZ; } // 6 TSB ZPG +OP(op,24) { int tmp; H6280_CYCLES(4); RD_ZPG; HBIT; } // 4 BIT ZPG +OP(op,44) { int tmp; BSR; } // 8 BSR REL +OP(op,64) { int tmp; H6280_CYCLES(4); STZ; WR_ZPG; } // 4 STZ ZPG +OP(op,84) { int tmp; H6280_CYCLES(4); STY; WR_ZPG; } // 4 STY ZPG +OP(op,a4) { int tmp; H6280_CYCLES(4); RD_ZPG; LDY; } // 4 LDY ZPG +OP(op,c4) { int tmp; H6280_CYCLES(4); RD_ZPG; CPY; } // 4 CPY ZPG +OP(op,e4) { int tmp; H6280_CYCLES(4); RD_ZPG; CPX; } // 4 CPX ZPG + +OP(op,14) { int tmp; H6280_CYCLES(6); RD_ZPG; TRB; WB_EAZ; } // 6 TRB ZPG +OP(op,34) { int tmp; H6280_CYCLES(4); RD_ZPX; HBIT; } // 4 BIT ZPX +OP(op,54) { H6280_CYCLES(3); CSL; } // 3 CSL +OP(op,74) { int tmp; H6280_CYCLES(4); STZ; WR_ZPX; } // 4 STZ ZPX +OP(op,94) { int tmp; H6280_CYCLES(4); STY; WR_ZPX; } // 4 STY ZPX +OP(op,b4) { int tmp; H6280_CYCLES(4); RD_ZPX; LDY; } // 4 LDY ZPX +OP(op,d4) { H6280_CYCLES(3); CSH; } // 3 CSH +OP(op,f4) { H6280_CYCLES(2); SET; } // 2 SET + +OP(op,05) { int tmp; H6280_CYCLES(4); RD_ZPG; ORA; } // 4 ORA ZPG +OP(op,25) { int tmp; H6280_CYCLES(4); RD_ZPG; AND; } // 4 AND ZPG +OP(op,45) { int tmp; H6280_CYCLES(4); RD_ZPG; EOR; } // 4 EOR ZPG +OP(op,65) { int tmp; H6280_CYCLES(4); RD_ZPG; ADC; } // 4 ADC ZPG +OP(op,85) { int tmp; H6280_CYCLES(4); STA; WR_ZPG; } // 4 STA ZPG +OP(op,a5) { int tmp; H6280_CYCLES(4); RD_ZPG; LDA; } // 4 LDA ZPG +OP(op,c5) { int tmp; H6280_CYCLES(4); RD_ZPG; CMP; } // 4 CMP ZPG +OP(op,e5) { int tmp; H6280_CYCLES(4); RD_ZPG; SBC; } // 4 SBC ZPG + +OP(op,15) { int tmp; H6280_CYCLES(4); RD_ZPX; ORA; } // 4 ORA ZPX +OP(op,35) { int tmp; H6280_CYCLES(4); RD_ZPX; AND; } // 4 AND ZPX +OP(op,55) { int tmp; H6280_CYCLES(4); RD_ZPX; EOR; } // 4 EOR ZPX +OP(op,75) { int tmp; H6280_CYCLES(4); RD_ZPX; ADC; } // 4 ADC ZPX +OP(op,95) { int tmp; H6280_CYCLES(4); STA; WR_ZPX; } // 4 STA ZPX +OP(op,b5) { int tmp; H6280_CYCLES(4); RD_ZPX; LDA; } // 4 LDA ZPX +OP(op,d5) { int tmp; H6280_CYCLES(4); RD_ZPX; CMP; } // 4 CMP ZPX +OP(op,f5) { int tmp; H6280_CYCLES(4); RD_ZPX; SBC; } // 4 SBC ZPX + +OP(op,06) { int tmp; H6280_CYCLES(6); RD_ZPG; ASL; WB_EAZ; } // 6 ASL ZPG +OP(op,26) { int tmp; H6280_CYCLES(6); RD_ZPG; ROL; WB_EAZ; } // 6 ROL ZPG +OP(op,46) { int tmp; H6280_CYCLES(6); RD_ZPG; LSR; WB_EAZ; } // 6 LSR ZPG +OP(op,66) { int tmp; H6280_CYCLES(6); RD_ZPG; ROR; WB_EAZ; } // 6 ROR ZPG +OP(op,86) { int tmp; H6280_CYCLES(4); STX; WR_ZPG; } // 4 STX ZPG +OP(op,a6) { int tmp; H6280_CYCLES(4); RD_ZPG; LDX; } // 4 LDX ZPG +OP(op,c6) { int tmp; H6280_CYCLES(6); RD_ZPG; DEC; WB_EAZ; } // 6 DEC ZPG +OP(op,e6) { int tmp; H6280_CYCLES(6); RD_ZPG; INC; WB_EAZ; } // 6 INC ZPG + +OP(op,16) { int tmp; H6280_CYCLES(6); RD_ZPX; ASL; WB_EAZ; } // 6 ASL ZPX +OP(op,36) { int tmp; H6280_CYCLES(6); RD_ZPX; ROL; WB_EAZ; } // 6 ROL ZPX +OP(op,56) { int tmp; H6280_CYCLES(6); RD_ZPX; LSR; WB_EAZ; } // 6 LSR ZPX +OP(op,76) { int tmp; H6280_CYCLES(6); RD_ZPX; ROR; WB_EAZ; } // 6 ROR ZPX +OP(op,96) { int tmp; H6280_CYCLES(4); STX; WR_ZPY; } // 4 STX ZPY +OP(op,b6) { int tmp; H6280_CYCLES(4); RD_ZPY; LDX; } // 4 LDX ZPY +OP(op,d6) { int tmp; H6280_CYCLES(6); RD_ZPX; DEC; WB_EAZ; } // 6 DEC ZPX +OP(op,f6) { int tmp; H6280_CYCLES(6); RD_ZPX; INC; WB_EAZ; } // 6 INC ZPX + +OP(op,07) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(0);WB_EAZ;} // 7 RMB0 ZPG +OP(op,27) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(2);WB_EAZ;} // 7 RMB2 ZPG +OP(op,47) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(4);WB_EAZ;} // 7 RMB4 ZPG +OP(op,67) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(6);WB_EAZ;} // 7 RMB6 ZPG +OP(op,87) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(0);WB_EAZ;} // 7 SMB0 ZPG +OP(op,a7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(2);WB_EAZ;} // 7 SMB2 ZPG +OP(op,c7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(4);WB_EAZ;} // 7 SMB4 ZPG +OP(op,e7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(6);WB_EAZ;} // 7 SMB6 ZPG + +OP(op,17) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(1);WB_EAZ;} // 7 RMB1 ZPG +OP(op,37) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(3);WB_EAZ;} // 7 RMB3 ZPG +OP(op,57) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(5);WB_EAZ;} // 7 RMB5 ZPG +OP(op,77) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(7);WB_EAZ;} // 7 RMB7 ZPG +OP(op,97) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(1);WB_EAZ;} // 7 SMB1 ZPG +OP(op,b7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(3);WB_EAZ;} // 7 SMB3 ZPG +OP(op,d7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(5);WB_EAZ;} // 7 SMB5 ZPG +OP(op,f7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(7);WB_EAZ;} // 7 SMB7 ZPG + +OP(op,08) { H6280_CYCLES(3); PHP; } // 3 PHP +OP(op,28) { H6280_CYCLES(4); PLP; } // 4 PLP +OP(op,48) { H6280_CYCLES(3); PHA; } // 3 PHA +OP(op,68) { H6280_CYCLES(4); PLA; } // 4 PLA +OP(op,88) { H6280_CYCLES(2); DEY; } // 2 DEY +OP(op,a8) { H6280_CYCLES(2); TAY; } // 2 TAY +OP(op,c8) { H6280_CYCLES(2); INY; } // 2 INY +OP(op,e8) { H6280_CYCLES(2); INX; } // 2 INX + +OP(op,18) { H6280_CYCLES(2); CLC; } // 2 CLC +OP(op,38) { H6280_CYCLES(2); SEC; } // 2 SEC +OP(op,58) { H6280_CYCLES(2); CLI; } // 2 CLI +OP(op,78) { H6280_CYCLES(2); SEI; } // 2 SEI +OP(op,98) { H6280_CYCLES(2); TYA; } // 2 TYA +OP(op,b8) { H6280_CYCLES(2); CLV; } // 2 CLV +OP(op,d8) { H6280_CYCLES(2); CLD; } // 2 CLD +OP(op,f8) { H6280_CYCLES(2); SED; } // 2 SED + +OP(op,09) { int tmp; H6280_CYCLES(2); RD_IMM; ORA; } // 2 ORA IMM +OP(op,29) { int tmp; H6280_CYCLES(2); RD_IMM; AND; } // 2 AND IMM +OP(op,49) { int tmp; H6280_CYCLES(2); RD_IMM; EOR; } // 2 EOR IMM +OP(op,69) { int tmp; H6280_CYCLES(2); RD_IMM; ADC; } // 2 ADC IMM +OP(op,89) { int tmp; H6280_CYCLES(2); RD_IMM; HBIT; } // 2 BIT IMM +OP(op,a9) { int tmp; H6280_CYCLES(2); RD_IMM; LDA; } // 2 LDA IMM +OP(op,c9) { int tmp; H6280_CYCLES(2); RD_IMM; CMP; } // 2 CMP IMM +OP(op,e9) { int tmp; H6280_CYCLES(2); RD_IMM; SBC; } // 2 SBC IMM + +OP(op,19) { int tmp; H6280_CYCLES(5); RD_ABY; ORA; } // 5 ORA ABY +OP(op,39) { int tmp; H6280_CYCLES(5); RD_ABY; AND; } // 5 AND ABY +OP(op,59) { int tmp; H6280_CYCLES(5); RD_ABY; EOR; } // 5 EOR ABY +OP(op,79) { int tmp; H6280_CYCLES(5); RD_ABY; ADC; } // 5 ADC ABY +OP(op,99) { int tmp; H6280_CYCLES(5); STA; WR_ABY; } // 5 STA ABY +OP(op,b9) { int tmp; H6280_CYCLES(5); RD_ABY; LDA; } // 5 LDA ABY +OP(op,d9) { int tmp; H6280_CYCLES(5); RD_ABY; CMP; } // 5 CMP ABY +OP(op,f9) { int tmp; H6280_CYCLES(5); RD_ABY; SBC; } // 5 SBC ABY + +OP(op,0a) { int tmp; H6280_CYCLES(2); RD_ACC; ASL; WB_ACC; } // 2 ASL A +OP(op,2a) { int tmp; H6280_CYCLES(2); RD_ACC; ROL; WB_ACC; } // 2 ROL A +OP(op,4a) { int tmp; H6280_CYCLES(2); RD_ACC; LSR; WB_ACC; } // 2 LSR A +OP(op,6a) { int tmp; H6280_CYCLES(2); RD_ACC; ROR; WB_ACC; } // 2 ROR A +OP(op,8a) { H6280_CYCLES(2); TXA; } // 2 TXA +OP(op,aa) { H6280_CYCLES(2); TAX; } // 2 TAX +OP(op,ca) { H6280_CYCLES(2); DEX; } // 2 DEX +OP(op,ea) { H6280_CYCLES(2); NOP; } // 2 NOP + +OP(op,1a) { H6280_CYCLES(2); INA; } // 2 INC A +OP(op,3a) { H6280_CYCLES(2); DEA; } // 2 DEC A +OP(op,5a) { H6280_CYCLES(3); PHY; } // 3 PHY +OP(op,7a) { H6280_CYCLES(4); PLY; } // 4 PLY +OP(op,9a) { H6280_CYCLES(2); TXS; } // 2 TXS +OP(op,ba) { H6280_CYCLES(2); TSX; } // 2 TSX +OP(op,da) { H6280_CYCLES(3); PHX; } // 3 PHX +OP(op,fa) { H6280_CYCLES(4); PLX; } // 4 PLX + +OP(op,0b) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,2b) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,4b) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,6b) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,8b) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,ab) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,cb) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,eb) { H6280_CYCLES(2); NOP; } // 2 NOP + +OP(op,1b) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,3b) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,5b) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,7b) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,9b) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,bb) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,db) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,fb) { H6280_CYCLES(2); NOP; } // 2 NOP + +OP(op,0c) { int tmp; H6280_CYCLES(7); RD_ABS; TSB; WB_EA; } // 7 TSB ABS +OP(op,2c) { int tmp; H6280_CYCLES(5); RD_ABS; HBIT; } // 5 BIT ABS +OP(op,4c) { H6280_CYCLES(4); EA_ABS; JMP; } // 4 JMP ABS +OP(op,6c) { int tmp; H6280_CYCLES(7); EA_IND; JMP; } // 7 JMP IND +OP(op,8c) { int tmp; H6280_CYCLES(5); STY; WR_ABS; } // 5 STY ABS +OP(op,ac) { int tmp; H6280_CYCLES(5); RD_ABS; LDY; } // 5 LDY ABS +OP(op,cc) { int tmp; H6280_CYCLES(5); RD_ABS; CPY; } // 5 CPY ABS +OP(op,ec) { int tmp; H6280_CYCLES(5); RD_ABS; CPX; } // 5 CPX ABS + +OP(op,1c) { int tmp; H6280_CYCLES(7); RD_ABS; TRB; WB_EA; } // 7 TRB ABS +OP(op,3c) { int tmp; H6280_CYCLES(5); RD_ABX; HBIT; } // 5 BIT ABX +OP(op,5c) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,7c) { int tmp; H6280_CYCLES(7); EA_IAX; JMP; } // 7 JMP IAX +OP(op,9c) { int tmp; H6280_CYCLES(5); STZ; WR_ABS; } // 5 STZ ABS +OP(op,bc) { int tmp; H6280_CYCLES(5); RD_ABX; LDY; } // 5 LDY ABX +OP(op,dc) { H6280_CYCLES(2); NOP; } // 2 NOP +OP(op,fc) { H6280_CYCLES(2); NOP; } // 2 NOP + +OP(op,0d) { int tmp; H6280_CYCLES(5); RD_ABS; ORA; } // 5 ORA ABS +OP(op,2d) { int tmp; H6280_CYCLES(5); RD_ABS; AND; } // 5 AND ABS +OP(op,4d) { int tmp; H6280_CYCLES(5); RD_ABS; EOR; } // 5 EOR ABS +OP(op,6d) { int tmp; H6280_CYCLES(5); RD_ABS; ADC; } // 5 ADC ABS +OP(op,8d) { int tmp; H6280_CYCLES(5); STA; WR_ABS; } // 5 STA ABS +OP(op,ad) { int tmp; H6280_CYCLES(5); RD_ABS; LDA; } // 5 LDA ABS +OP(op,cd) { int tmp; H6280_CYCLES(5); RD_ABS; CMP; } // 5 CMP ABS +OP(op,ed) { int tmp; H6280_CYCLES(5); RD_ABS; SBC; } // 5 SBC ABS + +OP(op,1d) { int tmp; H6280_CYCLES(5); RD_ABX; ORA; } // 5 ORA ABX +OP(op,3d) { int tmp; H6280_CYCLES(5); RD_ABX; AND; } // 5 AND ABX +OP(op,5d) { int tmp; H6280_CYCLES(5); RD_ABX; EOR; } // 5 EOR ABX +OP(op,7d) { int tmp; H6280_CYCLES(5); RD_ABX; ADC; } // 5 ADC ABX +OP(op,9d) { int tmp; H6280_CYCLES(5); STA; WR_ABX; } // 5 STA ABX +OP(op,bd) { int tmp; H6280_CYCLES(5); RD_ABX; LDA; } // 5 LDA ABX +OP(op,dd) { int tmp; H6280_CYCLES(5); RD_ABX; CMP; } // 5 CMP ABX +OP(op,fd) { int tmp; H6280_CYCLES(5); RD_ABX; SBC; } // 5 SBC ABX + +OP(op,0e) { int tmp; H6280_CYCLES(7); RD_ABS; ASL; WB_EA; } // 7 ASL ABS +OP(op,2e) { int tmp; H6280_CYCLES(7); RD_ABS; ROL; WB_EA; } // 7 ROL ABS +OP(op,4e) { int tmp; H6280_CYCLES(7); RD_ABS; LSR; WB_EA; } // 7 LSR ABS +OP(op,6e) { int tmp; H6280_CYCLES(7); RD_ABS; ROR; WB_EA; } // 7 ROR ABS +OP(op,8e) { int tmp; H6280_CYCLES(5); STX; WR_ABS; } // 5 STX ABS +OP(op,ae) { int tmp; H6280_CYCLES(5); RD_ABS; LDX; } // 5 LDX ABS +OP(op,ce) { int tmp; H6280_CYCLES(7); RD_ABS; DEC; WB_EA; } // 7 DEC ABS +OP(op,ee) { int tmp; H6280_CYCLES(7); RD_ABS; INC; WB_EA; } // 7 INC ABS + +OP(op,1e) { int tmp; H6280_CYCLES(7); RD_ABX; ASL; WB_EA; } // 7 ASL ABX +OP(op,3e) { int tmp; H6280_CYCLES(7); RD_ABX; ROL; WB_EA; } // 7 ROL ABX +OP(op,5e) { int tmp; H6280_CYCLES(7); RD_ABX; LSR; WB_EA; } // 7 LSR ABX +OP(op,7e) { int tmp; H6280_CYCLES(7); RD_ABX; ROR; WB_EA; } // 7 ROR ABX +OP(op,9e) { int tmp; H6280_CYCLES(5); STZ; WR_ABX; } // 5 STZ ABX +OP(op,be) { int tmp; H6280_CYCLES(5); RD_ABY; LDX; } // 5 LDX ABY +OP(op,de) { int tmp; H6280_CYCLES(7); RD_ABX; DEC; WB_EA; } // 7 DEC ABX +OP(op,fe) { int tmp; H6280_CYCLES(7); RD_ABX; INC; WB_EA; } // 7 INC ABX + +OP(op,0f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(0); } // 6/8 BBR0 ZPG,REL +OP(op,2f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(2); } // 6/8 BBR2 ZPG,REL +OP(op,4f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(4); } // 6/8 BBR4 ZPG,REL +OP(op,6f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(6); } // 6/8 BBR6 ZPG,REL +OP(op,8f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(0); } // 6/8 BBS0 ZPG,REL +OP(op,af) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(2); } // 6/8 BBS2 ZPG,REL +OP(op,cf) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(4); } // 6/8 BBS4 ZPG,REL +OP(op,ef) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(6); } // 6/8 BBS6 ZPG,REL + +OP(op,1f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(1); } // 6/8 BBR1 ZPG,REL +OP(op,3f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(3); } // 6/8 BBR3 ZPG,REL +OP(op,5f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(5); } // 6/8 BBR5 ZPG,REL +OP(op,7f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(7); } // 6/8 BBR7 ZPG,REL +OP(op,9f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(1); } // 6/8 BBS1 ZPG,REL +OP(op,bf) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(3); } // 6/8 BBS3 ZPG,REL +OP(op,df) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(5); } // 6/8 BBS5 ZPG,REL +OP(op,ff) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(7); } // 6/8 BBS7 ZPG,REL //------------------------------------------------- // state_string_export - export state as a string diff --git a/src/emu/cpu/h6280/h6280.h b/src/emu/cpu/h6280/h6280.h index c712d14ac08..4dd8d511bc9 100644 --- a/src/emu/cpu/h6280/h6280.h +++ b/src/emu/cpu/h6280/h6280.h @@ -45,13 +45,6 @@ enum H6280_M8 }; -#define H6280_RESET_VEC 0xfffe -#define H6280_NMI_VEC 0xfffc -#define H6280_TIMER_VEC 0xfffa -#define H6280_IRQ1_VEC 0xfff8 -#define H6280_IRQ2_VEC 0xfff6 /* Aka BRK vector */ - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -115,11 +108,83 @@ protected: UINT8 read_opcode(); UINT8 read_opcode_arg(); - // include the macros - #include "h6280ops.h" +#undef PROTOTYPES +#define PROTOTYPES(prefix) \ + void prefix##_00(); void prefix##_01(); void prefix##_02(); void prefix##_03(); \ + void prefix##_04(); void prefix##_05(); void prefix##_06(); void prefix##_07(); \ + void prefix##_08(); void prefix##_09(); void prefix##_0a(); void prefix##_0b(); \ + void prefix##_0c(); void prefix##_0d(); void prefix##_0e(); void prefix##_0f(); \ + void prefix##_10(); void prefix##_11(); void prefix##_12(); void prefix##_13(); \ + void prefix##_14(); void prefix##_15(); void prefix##_16(); void prefix##_17(); \ + void prefix##_18(); void prefix##_19(); void prefix##_1a(); void prefix##_1b(); \ + void prefix##_1c(); void prefix##_1d(); void prefix##_1e(); void prefix##_1f(); \ + void prefix##_20(); void prefix##_21(); void prefix##_22(); void prefix##_23(); \ + void prefix##_24(); void prefix##_25(); void prefix##_26(); void prefix##_27(); \ + void prefix##_28(); void prefix##_29(); void prefix##_2a(); void prefix##_2b(); \ + void prefix##_2c(); void prefix##_2d(); void prefix##_2e(); void prefix##_2f(); \ + void prefix##_30(); void prefix##_31(); void prefix##_32(); void prefix##_33(); \ + void prefix##_34(); void prefix##_35(); void prefix##_36(); void prefix##_37(); \ + void prefix##_38(); void prefix##_39(); void prefix##_3a(); void prefix##_3b(); \ + void prefix##_3c(); void prefix##_3d(); void prefix##_3e(); void prefix##_3f(); \ + void prefix##_40(); void prefix##_41(); void prefix##_42(); void prefix##_43(); \ + void prefix##_44(); void prefix##_45(); void prefix##_46(); void prefix##_47(); \ + void prefix##_48(); void prefix##_49(); void prefix##_4a(); void prefix##_4b(); \ + void prefix##_4c(); void prefix##_4d(); void prefix##_4e(); void prefix##_4f(); \ + void prefix##_50(); void prefix##_51(); void prefix##_52(); void prefix##_53(); \ + void prefix##_54(); void prefix##_55(); void prefix##_56(); void prefix##_57(); \ + void prefix##_58(); void prefix##_59(); void prefix##_5a(); void prefix##_5b(); \ + void prefix##_5c(); void prefix##_5d(); void prefix##_5e(); void prefix##_5f(); \ + void prefix##_60(); void prefix##_61(); void prefix##_62(); void prefix##_63(); \ + void prefix##_64(); void prefix##_65(); void prefix##_66(); void prefix##_67(); \ + void prefix##_68(); void prefix##_69(); void prefix##_6a(); void prefix##_6b(); \ + void prefix##_6c(); void prefix##_6d(); void prefix##_6e(); void prefix##_6f(); \ + void prefix##_70(); void prefix##_71(); void prefix##_72(); void prefix##_73(); \ + void prefix##_74(); void prefix##_75(); void prefix##_76(); void prefix##_77(); \ + void prefix##_78(); void prefix##_79(); void prefix##_7a(); void prefix##_7b(); \ + void prefix##_7c(); void prefix##_7d(); void prefix##_7e(); void prefix##_7f(); \ + void prefix##_80(); void prefix##_81(); void prefix##_82(); void prefix##_83(); \ + void prefix##_84(); void prefix##_85(); void prefix##_86(); void prefix##_87(); \ + void prefix##_88(); void prefix##_89(); void prefix##_8a(); void prefix##_8b(); \ + void prefix##_8c(); void prefix##_8d(); void prefix##_8e(); void prefix##_8f(); \ + void prefix##_90(); void prefix##_91(); void prefix##_92(); void prefix##_93(); \ + void prefix##_94(); void prefix##_95(); void prefix##_96(); void prefix##_97(); \ + void prefix##_98(); void prefix##_99(); void prefix##_9a(); void prefix##_9b(); \ + void prefix##_9c(); void prefix##_9d(); void prefix##_9e(); void prefix##_9f(); \ + void prefix##_a0(); void prefix##_a1(); void prefix##_a2(); void prefix##_a3(); \ + void prefix##_a4(); void prefix##_a5(); void prefix##_a6(); void prefix##_a7(); \ + void prefix##_a8(); void prefix##_a9(); void prefix##_aa(); void prefix##_ab(); \ + void prefix##_ac(); void prefix##_ad(); void prefix##_ae(); void prefix##_af(); \ + void prefix##_b0(); void prefix##_b1(); void prefix##_b2(); void prefix##_b3(); \ + void prefix##_b4(); void prefix##_b5(); void prefix##_b6(); void prefix##_b7(); \ + void prefix##_b8(); void prefix##_b9(); void prefix##_ba(); void prefix##_bb(); \ + void prefix##_bc(); void prefix##_bd(); void prefix##_be(); void prefix##_bf(); \ + void prefix##_c0(); void prefix##_c1(); void prefix##_c2(); void prefix##_c3(); \ + void prefix##_c4(); void prefix##_c5(); void prefix##_c6(); void prefix##_c7(); \ + void prefix##_c8(); void prefix##_c9(); void prefix##_ca(); void prefix##_cb(); \ + void prefix##_cc(); void prefix##_cd(); void prefix##_ce(); void prefix##_cf(); \ + void prefix##_d0(); void prefix##_d1(); void prefix##_d2(); void prefix##_d3(); \ + void prefix##_d4(); void prefix##_d5(); void prefix##_d6(); void prefix##_d7(); \ + void prefix##_d8(); void prefix##_d9(); void prefix##_da(); void prefix##_db(); \ + void prefix##_dc(); void prefix##_dd(); void prefix##_de(); void prefix##_df(); \ + void prefix##_e0(); void prefix##_e1(); void prefix##_e2(); void prefix##_e3(); \ + void prefix##_e4(); void prefix##_e5(); void prefix##_e6(); void prefix##_e7(); \ + void prefix##_e8(); void prefix##_e9(); void prefix##_ea(); void prefix##_eb(); \ + void prefix##_ec(); void prefix##_ed(); void prefix##_ee(); void prefix##_ef(); \ + void prefix##_f0(); void prefix##_f1(); void prefix##_f2(); void prefix##_f3(); \ + void prefix##_f4(); void prefix##_f5(); void prefix##_f6(); void prefix##_f7(); \ + void prefix##_f8(); void prefix##_f9(); void prefix##_fa(); void prefix##_fb(); \ + void prefix##_fc(); void prefix##_fd(); void prefix##_fe(); void prefix##_ff(); - // include the opcode macros and functions - #include "tblh6280.inc" + PROTOTYPES(op); + + enum + { + H6280_RESET_VEC = 0xfffe, + H6280_NMI_VEC = 0xfffc, + H6280_TIMER_VEC = 0xfffa, + H6280_IRQ1_VEC = 0xfff8, + H6280_IRQ2_VEC = 0xfff6 /* Aka BRK vector */ + }; // address spaces const address_space_config m_program_config; diff --git a/src/emu/cpu/h6280/tblh6280.inc b/src/emu/cpu/h6280/tblh6280.inc deleted file mode 100644 index 8ced7561acd..00000000000 --- a/src/emu/cpu/h6280/tblh6280.inc +++ /dev/null @@ -1,309 +0,0 @@ -/***************************************************************************** - - tblh6280.c - - Copyright Bryan McPhail, mish@tendril.co.uk - - This source code is based (with permission!) on the 6502 emulator by - Juergen Buchmueller. It is released as part of the Mame emulator project. - Let me know if you intend to use this code in any other project. - -******************************************************************************/ - -#undef OP -#define OP(nnn) inline void op##nnn() - -/***************************************************************************** - ***************************************************************************** - * - * Hu6280 opcodes - * - ***************************************************************************** - * op temp cycles rdmem opc wrmem ******************/ -OP(_000) { H6280_CYCLES(8); BRK; } // 8 BRK -OP(_020) { H6280_CYCLES(7); EA_ABS; JSR; } // 7 JSR ABS -OP(_040) { H6280_CYCLES(7); RTI; } // 7 RTI -OP(_060) { H6280_CYCLES(7); RTS; } // 7 RTS -OP(_080) { int tmp; BRA(1); } // 4 BRA REL -OP(_0a0) { int tmp; H6280_CYCLES(2); RD_IMM; LDY; } // 2 LDY IMM -OP(_0c0) { int tmp; H6280_CYCLES(2); RD_IMM; CPY; } // 2 CPY IMM -OP(_0e0) { int tmp; H6280_CYCLES(2); RD_IMM; CPX; } // 2 CPX IMM - -OP(_010) { int tmp; BPL; } // 2/4 BPL REL -OP(_030) { int tmp; BMI; } // 2/4 BMI REL -OP(_050) { int tmp; BVC; } // 2/4 BVC REL -OP(_070) { int tmp; BVS; } // 2/4 BVS REL -OP(_090) { int tmp; BCC; } // 2/4 BCC REL -OP(_0b0) { int tmp; BCS; } // 2/4 BCS REL -OP(_0d0) { int tmp; BNE; } // 2/4 BNE REL -OP(_0f0) { int tmp; BEQ; } // 2/4 BEQ REL - -OP(_001) { int tmp; H6280_CYCLES(7); RD_IDX; ORA; } // 7 ORA IDX -OP(_021) { int tmp; H6280_CYCLES(7); RD_IDX; AND; } // 7 AND IDX -OP(_041) { int tmp; H6280_CYCLES(7); RD_IDX; EOR; } // 7 EOR IDX -OP(_061) { int tmp; H6280_CYCLES(7); RD_IDX; ADC; } // 7 ADC IDX -OP(_081) { int tmp; H6280_CYCLES(7); STA; WR_IDX; } // 7 STA IDX -OP(_0a1) { int tmp; H6280_CYCLES(7); RD_IDX; LDA; } // 7 LDA IDX -OP(_0c1) { int tmp; H6280_CYCLES(7); RD_IDX; CMP; } // 7 CMP IDX -OP(_0e1) { int tmp; H6280_CYCLES(7); RD_IDX; SBC; } // 7 SBC IDX - -OP(_011) { int tmp; H6280_CYCLES(7); RD_IDY; ORA; } // 7 ORA IDY -OP(_031) { int tmp; H6280_CYCLES(7); RD_IDY; AND; } // 7 AND IDY -OP(_051) { int tmp; H6280_CYCLES(7); RD_IDY; EOR; } // 7 EOR IDY -OP(_071) { int tmp; H6280_CYCLES(7); RD_IDY; ADC; } // 7 ADC AZP -OP(_091) { int tmp; H6280_CYCLES(7); STA; WR_IDY; } // 7 STA IDY -OP(_0b1) { int tmp; H6280_CYCLES(7); RD_IDY; LDA; } // 7 LDA IDY -OP(_0d1) { int tmp; H6280_CYCLES(7); RD_IDY; CMP; } // 7 CMP IDY -OP(_0f1) { int tmp; H6280_CYCLES(7); RD_IDY; SBC; } // 7 SBC IDY - -OP(_002) { int tmp; H6280_CYCLES(3); SXY; } // 3 SXY -OP(_022) { int tmp; H6280_CYCLES(3); SAX; } // 3 SAX -OP(_042) { int tmp; H6280_CYCLES(3); SAY; } // 3 SAY -OP(_062) { H6280_CYCLES(2); CLA; } // 2 CLA -OP(_082) { H6280_CYCLES(2); CLX; } // 2 CLX -OP(_0a2) { int tmp; H6280_CYCLES(2); RD_IMM; LDX; } // 2 LDX IMM -OP(_0c2) { H6280_CYCLES(2); CLY; } // 2 CLY -OP(_0e2) { H6280_CYCLES(2); NOP; } // 2 NOP - -OP(_012) { int tmp; H6280_CYCLES(7); RD_ZPI; ORA; } // 7 ORA ZPI -OP(_032) { int tmp; H6280_CYCLES(7); RD_ZPI; AND; } // 7 AND ZPI -OP(_052) { int tmp; H6280_CYCLES(7); RD_ZPI; EOR; } // 7 EOR ZPI -OP(_072) { int tmp; H6280_CYCLES(7); RD_ZPI; ADC; } // 7 ADC ZPI -OP(_092) { int tmp; H6280_CYCLES(7); STA; WR_ZPI; } // 7 STA ZPI -OP(_0b2) { int tmp; H6280_CYCLES(7); RD_ZPI; LDA; } // 7 LDA ZPI -OP(_0d2) { int tmp; H6280_CYCLES(7); RD_ZPI; CMP; } // 7 CMP ZPI -OP(_0f2) { int tmp; H6280_CYCLES(7); RD_ZPI; SBC; } // 7 SBC ZPI - -OP(_003) { int tmp; H6280_CYCLES(5); RD_IMM; ST0; } // 4 + 1 penalty cycle ST0 IMM -OP(_023) { int tmp; H6280_CYCLES(5); RD_IMM; ST2; } // 4 + 1 penalty cycle ST2 IMM -OP(_043) { int tmp; H6280_CYCLES(4); RD_IMM; TMA; } // 4 TMA -OP(_063) { H6280_CYCLES(4); NOP; } // 2 NOP -OP(_083) { int tmp,tmp2; H6280_CYCLES(7); RD_IMM2; RD_ZPG; TST; } // 7 TST IMM,ZPG -OP(_0a3) { int tmp,tmp2; H6280_CYCLES(7); RD_IMM2; RD_ZPX; TST; } // 7 TST IMM,ZPX -OP(_0c3) { int to,from,length; TDD; } // 6*l+17 TDD XFER -OP(_0e3) { int to,from,length,alternate; TIA; } // 6*l+17 TIA XFER - -OP(_013) { int tmp; H6280_CYCLES(5); RD_IMM; ST1; } // 4 + 1 penalty cycle ST1 -OP(_033) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_053) { int tmp; H6280_CYCLES(5); RD_IMM; TAM; } // 5 TAM IMM -OP(_073) { int to,from,length; TII; } // 6*l+17 TII XFER -OP(_093) { int tmp,tmp2; H6280_CYCLES(8); RD_IMM2; RD_ABS; TST; } // 8 TST IMM,ABS -OP(_0b3) { int tmp,tmp2; H6280_CYCLES(8); RD_IMM2; RD_ABX; TST; } // 8 TST IMM,ABX -OP(_0d3) { int to,from,length; TIN; } // 6*l+17 TIN XFER -OP(_0f3) { int to,from,length,alternate; TAI; } // 6*l+17 TAI XFER - -OP(_004) { int tmp; H6280_CYCLES(6); RD_ZPG; TSB; WB_EAZ; } // 6 TSB ZPG -OP(_024) { int tmp; H6280_CYCLES(4); RD_ZPG; HBIT; } // 4 BIT ZPG -OP(_044) { int tmp; BSR; } // 8 BSR REL -OP(_064) { int tmp; H6280_CYCLES(4); STZ; WR_ZPG; } // 4 STZ ZPG -OP(_084) { int tmp; H6280_CYCLES(4); STY; WR_ZPG; } // 4 STY ZPG -OP(_0a4) { int tmp; H6280_CYCLES(4); RD_ZPG; LDY; } // 4 LDY ZPG -OP(_0c4) { int tmp; H6280_CYCLES(4); RD_ZPG; CPY; } // 4 CPY ZPG -OP(_0e4) { int tmp; H6280_CYCLES(4); RD_ZPG; CPX; } // 4 CPX ZPG - -OP(_014) { int tmp; H6280_CYCLES(6); RD_ZPG; TRB; WB_EAZ; } // 6 TRB ZPG -OP(_034) { int tmp; H6280_CYCLES(4); RD_ZPX; HBIT; } // 4 BIT ZPX -OP(_054) { H6280_CYCLES(3); CSL; } // 3 CSL -OP(_074) { int tmp; H6280_CYCLES(4); STZ; WR_ZPX; } // 4 STZ ZPX -OP(_094) { int tmp; H6280_CYCLES(4); STY; WR_ZPX; } // 4 STY ZPX -OP(_0b4) { int tmp; H6280_CYCLES(4); RD_ZPX; LDY; } // 4 LDY ZPX -OP(_0d4) { H6280_CYCLES(3); CSH; } // 3 CSH -OP(_0f4) { H6280_CYCLES(2); SET; } // 2 SET - -OP(_005) { int tmp; H6280_CYCLES(4); RD_ZPG; ORA; } // 4 ORA ZPG -OP(_025) { int tmp; H6280_CYCLES(4); RD_ZPG; AND; } // 4 AND ZPG -OP(_045) { int tmp; H6280_CYCLES(4); RD_ZPG; EOR; } // 4 EOR ZPG -OP(_065) { int tmp; H6280_CYCLES(4); RD_ZPG; ADC; } // 4 ADC ZPG -OP(_085) { int tmp; H6280_CYCLES(4); STA; WR_ZPG; } // 4 STA ZPG -OP(_0a5) { int tmp; H6280_CYCLES(4); RD_ZPG; LDA; } // 4 LDA ZPG -OP(_0c5) { int tmp; H6280_CYCLES(4); RD_ZPG; CMP; } // 4 CMP ZPG -OP(_0e5) { int tmp; H6280_CYCLES(4); RD_ZPG; SBC; } // 4 SBC ZPG - -OP(_015) { int tmp; H6280_CYCLES(4); RD_ZPX; ORA; } // 4 ORA ZPX -OP(_035) { int tmp; H6280_CYCLES(4); RD_ZPX; AND; } // 4 AND ZPX -OP(_055) { int tmp; H6280_CYCLES(4); RD_ZPX; EOR; } // 4 EOR ZPX -OP(_075) { int tmp; H6280_CYCLES(4); RD_ZPX; ADC; } // 4 ADC ZPX -OP(_095) { int tmp; H6280_CYCLES(4); STA; WR_ZPX; } // 4 STA ZPX -OP(_0b5) { int tmp; H6280_CYCLES(4); RD_ZPX; LDA; } // 4 LDA ZPX -OP(_0d5) { int tmp; H6280_CYCLES(4); RD_ZPX; CMP; } // 4 CMP ZPX -OP(_0f5) { int tmp; H6280_CYCLES(4); RD_ZPX; SBC; } // 4 SBC ZPX - -OP(_006) { int tmp; H6280_CYCLES(6); RD_ZPG; ASL; WB_EAZ; } // 6 ASL ZPG -OP(_026) { int tmp; H6280_CYCLES(6); RD_ZPG; ROL; WB_EAZ; } // 6 ROL ZPG -OP(_046) { int tmp; H6280_CYCLES(6); RD_ZPG; LSR; WB_EAZ; } // 6 LSR ZPG -OP(_066) { int tmp; H6280_CYCLES(6); RD_ZPG; ROR; WB_EAZ; } // 6 ROR ZPG -OP(_086) { int tmp; H6280_CYCLES(4); STX; WR_ZPG; } // 4 STX ZPG -OP(_0a6) { int tmp; H6280_CYCLES(4); RD_ZPG; LDX; } // 4 LDX ZPG -OP(_0c6) { int tmp; H6280_CYCLES(6); RD_ZPG; DEC; WB_EAZ; } // 6 DEC ZPG -OP(_0e6) { int tmp; H6280_CYCLES(6); RD_ZPG; INC; WB_EAZ; } // 6 INC ZPG - -OP(_016) { int tmp; H6280_CYCLES(6); RD_ZPX; ASL; WB_EAZ; } // 6 ASL ZPX -OP(_036) { int tmp; H6280_CYCLES(6); RD_ZPX; ROL; WB_EAZ; } // 6 ROL ZPX -OP(_056) { int tmp; H6280_CYCLES(6); RD_ZPX; LSR; WB_EAZ; } // 6 LSR ZPX -OP(_076) { int tmp; H6280_CYCLES(6); RD_ZPX; ROR; WB_EAZ; } // 6 ROR ZPX -OP(_096) { int tmp; H6280_CYCLES(4); STX; WR_ZPY; } // 4 STX ZPY -OP(_0b6) { int tmp; H6280_CYCLES(4); RD_ZPY; LDX; } // 4 LDX ZPY -OP(_0d6) { int tmp; H6280_CYCLES(6); RD_ZPX; DEC; WB_EAZ; } // 6 DEC ZPX -OP(_0f6) { int tmp; H6280_CYCLES(6); RD_ZPX; INC; WB_EAZ; } // 6 INC ZPX - -OP(_007) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(0);WB_EAZ;} // 7 RMB0 ZPG -OP(_027) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(2);WB_EAZ;} // 7 RMB2 ZPG -OP(_047) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(4);WB_EAZ;} // 7 RMB4 ZPG -OP(_067) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(6);WB_EAZ;} // 7 RMB6 ZPG -OP(_087) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(0);WB_EAZ;} // 7 SMB0 ZPG -OP(_0a7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(2);WB_EAZ;} // 7 SMB2 ZPG -OP(_0c7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(4);WB_EAZ;} // 7 SMB4 ZPG -OP(_0e7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(6);WB_EAZ;} // 7 SMB6 ZPG - -OP(_017) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(1);WB_EAZ;} // 7 RMB1 ZPG -OP(_037) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(3);WB_EAZ;} // 7 RMB3 ZPG -OP(_057) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(5);WB_EAZ;} // 7 RMB5 ZPG -OP(_077) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(7);WB_EAZ;} // 7 RMB7 ZPG -OP(_097) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(1);WB_EAZ;} // 7 SMB1 ZPG -OP(_0b7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(3);WB_EAZ;} // 7 SMB3 ZPG -OP(_0d7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(5);WB_EAZ;} // 7 SMB5 ZPG -OP(_0f7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(7);WB_EAZ;} // 7 SMB7 ZPG - -OP(_008) { H6280_CYCLES(3); PHP; } // 3 PHP -OP(_028) { H6280_CYCLES(4); PLP; } // 4 PLP -OP(_048) { H6280_CYCLES(3); PHA; } // 3 PHA -OP(_068) { H6280_CYCLES(4); PLA; } // 4 PLA -OP(_088) { H6280_CYCLES(2); DEY; } // 2 DEY -OP(_0a8) { H6280_CYCLES(2); TAY; } // 2 TAY -OP(_0c8) { H6280_CYCLES(2); INY; } // 2 INY -OP(_0e8) { H6280_CYCLES(2); INX; } // 2 INX - -OP(_018) { H6280_CYCLES(2); CLC; } // 2 CLC -OP(_038) { H6280_CYCLES(2); SEC; } // 2 SEC -OP(_058) { H6280_CYCLES(2); CLI; } // 2 CLI -OP(_078) { H6280_CYCLES(2); SEI; } // 2 SEI -OP(_098) { H6280_CYCLES(2); TYA; } // 2 TYA -OP(_0b8) { H6280_CYCLES(2); CLV; } // 2 CLV -OP(_0d8) { H6280_CYCLES(2); CLD; } // 2 CLD -OP(_0f8) { H6280_CYCLES(2); SED; } // 2 SED - -OP(_009) { int tmp; H6280_CYCLES(2); RD_IMM; ORA; } // 2 ORA IMM -OP(_029) { int tmp; H6280_CYCLES(2); RD_IMM; AND; } // 2 AND IMM -OP(_049) { int tmp; H6280_CYCLES(2); RD_IMM; EOR; } // 2 EOR IMM -OP(_069) { int tmp; H6280_CYCLES(2); RD_IMM; ADC; } // 2 ADC IMM -OP(_089) { int tmp; H6280_CYCLES(2); RD_IMM; HBIT; } // 2 BIT IMM -OP(_0a9) { int tmp; H6280_CYCLES(2); RD_IMM; LDA; } // 2 LDA IMM -OP(_0c9) { int tmp; H6280_CYCLES(2); RD_IMM; CMP; } // 2 CMP IMM -OP(_0e9) { int tmp; H6280_CYCLES(2); RD_IMM; SBC; } // 2 SBC IMM - -OP(_019) { int tmp; H6280_CYCLES(5); RD_ABY; ORA; } // 5 ORA ABY -OP(_039) { int tmp; H6280_CYCLES(5); RD_ABY; AND; } // 5 AND ABY -OP(_059) { int tmp; H6280_CYCLES(5); RD_ABY; EOR; } // 5 EOR ABY -OP(_079) { int tmp; H6280_CYCLES(5); RD_ABY; ADC; } // 5 ADC ABY -OP(_099) { int tmp; H6280_CYCLES(5); STA; WR_ABY; } // 5 STA ABY -OP(_0b9) { int tmp; H6280_CYCLES(5); RD_ABY; LDA; } // 5 LDA ABY -OP(_0d9) { int tmp; H6280_CYCLES(5); RD_ABY; CMP; } // 5 CMP ABY -OP(_0f9) { int tmp; H6280_CYCLES(5); RD_ABY; SBC; } // 5 SBC ABY - -OP(_00a) { int tmp; H6280_CYCLES(2); RD_ACC; ASL; WB_ACC; } // 2 ASL A -OP(_02a) { int tmp; H6280_CYCLES(2); RD_ACC; ROL; WB_ACC; } // 2 ROL A -OP(_04a) { int tmp; H6280_CYCLES(2); RD_ACC; LSR; WB_ACC; } // 2 LSR A -OP(_06a) { int tmp; H6280_CYCLES(2); RD_ACC; ROR; WB_ACC; } // 2 ROR A -OP(_08a) { H6280_CYCLES(2); TXA; } // 2 TXA -OP(_0aa) { H6280_CYCLES(2); TAX; } // 2 TAX -OP(_0ca) { H6280_CYCLES(2); DEX; } // 2 DEX -OP(_0ea) { H6280_CYCLES(2); NOP; } // 2 NOP - -OP(_01a) { H6280_CYCLES(2); INA; } // 2 INC A -OP(_03a) { H6280_CYCLES(2); DEA; } // 2 DEC A -OP(_05a) { H6280_CYCLES(3); PHY; } // 3 PHY -OP(_07a) { H6280_CYCLES(4); PLY; } // 4 PLY -OP(_09a) { H6280_CYCLES(2); TXS; } // 2 TXS -OP(_0ba) { H6280_CYCLES(2); TSX; } // 2 TSX -OP(_0da) { H6280_CYCLES(3); PHX; } // 3 PHX -OP(_0fa) { H6280_CYCLES(4); PLX; } // 4 PLX - -OP(_00b) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_02b) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_04b) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_06b) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_08b) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_0ab) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_0cb) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_0eb) { H6280_CYCLES(2); NOP; } // 2 NOP - -OP(_01b) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_03b) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_05b) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_07b) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_09b) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_0bb) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_0db) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_0fb) { H6280_CYCLES(2); NOP; } // 2 NOP - -OP(_00c) { int tmp; H6280_CYCLES(7); RD_ABS; TSB; WB_EA; } // 7 TSB ABS -OP(_02c) { int tmp; H6280_CYCLES(5); RD_ABS; HBIT; } // 5 BIT ABS -OP(_04c) { H6280_CYCLES(4); EA_ABS; JMP; } // 4 JMP ABS -OP(_06c) { int tmp; H6280_CYCLES(7); EA_IND; JMP; } // 7 JMP IND -OP(_08c) { int tmp; H6280_CYCLES(5); STY; WR_ABS; } // 5 STY ABS -OP(_0ac) { int tmp; H6280_CYCLES(5); RD_ABS; LDY; } // 5 LDY ABS -OP(_0cc) { int tmp; H6280_CYCLES(5); RD_ABS; CPY; } // 5 CPY ABS -OP(_0ec) { int tmp; H6280_CYCLES(5); RD_ABS; CPX; } // 5 CPX ABS - -OP(_01c) { int tmp; H6280_CYCLES(7); RD_ABS; TRB; WB_EA; } // 7 TRB ABS -OP(_03c) { int tmp; H6280_CYCLES(5); RD_ABX; HBIT; } // 5 BIT ABX -OP(_05c) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_07c) { int tmp; H6280_CYCLES(7); EA_IAX; JMP; } // 7 JMP IAX -OP(_09c) { int tmp; H6280_CYCLES(5); STZ; WR_ABS; } // 5 STZ ABS -OP(_0bc) { int tmp; H6280_CYCLES(5); RD_ABX; LDY; } // 5 LDY ABX -OP(_0dc) { H6280_CYCLES(2); NOP; } // 2 NOP -OP(_0fc) { H6280_CYCLES(2); NOP; } // 2 NOP - -OP(_00d) { int tmp; H6280_CYCLES(5); RD_ABS; ORA; } // 5 ORA ABS -OP(_02d) { int tmp; H6280_CYCLES(5); RD_ABS; AND; } // 5 AND ABS -OP(_04d) { int tmp; H6280_CYCLES(5); RD_ABS; EOR; } // 5 EOR ABS -OP(_06d) { int tmp; H6280_CYCLES(5); RD_ABS; ADC; } // 5 ADC ABS -OP(_08d) { int tmp; H6280_CYCLES(5); STA; WR_ABS; } // 5 STA ABS -OP(_0ad) { int tmp; H6280_CYCLES(5); RD_ABS; LDA; } // 5 LDA ABS -OP(_0cd) { int tmp; H6280_CYCLES(5); RD_ABS; CMP; } // 5 CMP ABS -OP(_0ed) { int tmp; H6280_CYCLES(5); RD_ABS; SBC; } // 5 SBC ABS - -OP(_01d) { int tmp; H6280_CYCLES(5); RD_ABX; ORA; } // 5 ORA ABX -OP(_03d) { int tmp; H6280_CYCLES(5); RD_ABX; AND; } // 5 AND ABX -OP(_05d) { int tmp; H6280_CYCLES(5); RD_ABX; EOR; } // 5 EOR ABX -OP(_07d) { int tmp; H6280_CYCLES(5); RD_ABX; ADC; } // 5 ADC ABX -OP(_09d) { int tmp; H6280_CYCLES(5); STA; WR_ABX; } // 5 STA ABX -OP(_0bd) { int tmp; H6280_CYCLES(5); RD_ABX; LDA; } // 5 LDA ABX -OP(_0dd) { int tmp; H6280_CYCLES(5); RD_ABX; CMP; } // 5 CMP ABX -OP(_0fd) { int tmp; H6280_CYCLES(5); RD_ABX; SBC; } // 5 SBC ABX - -OP(_00e) { int tmp; H6280_CYCLES(7); RD_ABS; ASL; WB_EA; } // 7 ASL ABS -OP(_02e) { int tmp; H6280_CYCLES(7); RD_ABS; ROL; WB_EA; } // 7 ROL ABS -OP(_04e) { int tmp; H6280_CYCLES(7); RD_ABS; LSR; WB_EA; } // 7 LSR ABS -OP(_06e) { int tmp; H6280_CYCLES(7); RD_ABS; ROR; WB_EA; } // 7 ROR ABS -OP(_08e) { int tmp; H6280_CYCLES(5); STX; WR_ABS; } // 5 STX ABS -OP(_0ae) { int tmp; H6280_CYCLES(5); RD_ABS; LDX; } // 5 LDX ABS -OP(_0ce) { int tmp; H6280_CYCLES(7); RD_ABS; DEC; WB_EA; } // 7 DEC ABS -OP(_0ee) { int tmp; H6280_CYCLES(7); RD_ABS; INC; WB_EA; } // 7 INC ABS - -OP(_01e) { int tmp; H6280_CYCLES(7); RD_ABX; ASL; WB_EA; } // 7 ASL ABX -OP(_03e) { int tmp; H6280_CYCLES(7); RD_ABX; ROL; WB_EA; } // 7 ROL ABX -OP(_05e) { int tmp; H6280_CYCLES(7); RD_ABX; LSR; WB_EA; } // 7 LSR ABX -OP(_07e) { int tmp; H6280_CYCLES(7); RD_ABX; ROR; WB_EA; } // 7 ROR ABX -OP(_09e) { int tmp; H6280_CYCLES(5); STZ; WR_ABX; } // 5 STZ ABX -OP(_0be) { int tmp; H6280_CYCLES(5); RD_ABY; LDX; } // 5 LDX ABY -OP(_0de) { int tmp; H6280_CYCLES(7); RD_ABX; DEC; WB_EA; } // 7 DEC ABX -OP(_0fe) { int tmp; H6280_CYCLES(7); RD_ABX; INC; WB_EA; } // 7 INC ABX - -OP(_00f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(0); } // 6/8 BBR0 ZPG,REL -OP(_02f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(2); } // 6/8 BBR2 ZPG,REL -OP(_04f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(4); } // 6/8 BBR4 ZPG,REL -OP(_06f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(6); } // 6/8 BBR6 ZPG,REL -OP(_08f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(0); } // 6/8 BBS0 ZPG,REL -OP(_0af) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(2); } // 6/8 BBS2 ZPG,REL -OP(_0cf) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(4); } // 6/8 BBS4 ZPG,REL -OP(_0ef) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(6); } // 6/8 BBS6 ZPG,REL - -OP(_01f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(1); } // 6/8 BBR1 ZPG,REL -OP(_03f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(3); } // 6/8 BBR3 ZPG,REL -OP(_05f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(5); } // 6/8 BBR5 ZPG,REL -OP(_07f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(7); } // 6/8 BBR7 ZPG,REL -OP(_09f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(1); } // 6/8 BBS1 ZPG,REL -OP(_0bf) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(3); } // 6/8 BBS3 ZPG,REL -OP(_0df) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(5); } // 6/8 BBS5 ZPG,REL -OP(_0ff) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(7); } // 6/8 BBS7 ZPG,REL