trunk/src/emu/cpu/h6280/tblh6280.c
| r23776 | r23777 | |
| 1 | | /***************************************************************************** |
| 2 | | |
| 3 | | tblh6280.c |
| 4 | | |
| 5 | | Copyright Bryan McPhail, mish@tendril.co.uk |
| 6 | | |
| 7 | | This source code is based (with permission!) on the 6502 emulator by |
| 8 | | Juergen Buchmueller. It is released as part of the Mame emulator project. |
| 9 | | Let me know if you intend to use this code in any other project. |
| 10 | | |
| 11 | | ******************************************************************************/ |
| 12 | | |
| 13 | | #undef OP |
| 14 | | #define OP(nnn) inline void op##nnn() |
| 15 | | |
| 16 | | /***************************************************************************** |
| 17 | | ***************************************************************************** |
| 18 | | * |
| 19 | | * Hu6280 opcodes |
| 20 | | * |
| 21 | | ***************************************************************************** |
| 22 | | * op temp cycles rdmem opc wrmem ******************/ |
| 23 | | OP(_000) { H6280_CYCLES(8); BRK; } // 8 BRK |
| 24 | | OP(_020) { H6280_CYCLES(7); EA_ABS; JSR; } // 7 JSR ABS |
| 25 | | OP(_040) { H6280_CYCLES(7); RTI; } // 7 RTI |
| 26 | | OP(_060) { H6280_CYCLES(7); RTS; } // 7 RTS |
| 27 | | OP(_080) { int tmp; BRA(1); } // 4 BRA REL |
| 28 | | OP(_0a0) { int tmp; H6280_CYCLES(2); RD_IMM; LDY; } // 2 LDY IMM |
| 29 | | OP(_0c0) { int tmp; H6280_CYCLES(2); RD_IMM; CPY; } // 2 CPY IMM |
| 30 | | OP(_0e0) { int tmp; H6280_CYCLES(2); RD_IMM; CPX; } // 2 CPX IMM |
| 31 | | |
| 32 | | OP(_010) { int tmp; BPL; } // 2/4 BPL REL |
| 33 | | OP(_030) { int tmp; BMI; } // 2/4 BMI REL |
| 34 | | OP(_050) { int tmp; BVC; } // 2/4 BVC REL |
| 35 | | OP(_070) { int tmp; BVS; } // 2/4 BVS REL |
| 36 | | OP(_090) { int tmp; BCC; } // 2/4 BCC REL |
| 37 | | OP(_0b0) { int tmp; BCS; } // 2/4 BCS REL |
| 38 | | OP(_0d0) { int tmp; BNE; } // 2/4 BNE REL |
| 39 | | OP(_0f0) { int tmp; BEQ; } // 2/4 BEQ REL |
| 40 | | |
| 41 | | OP(_001) { int tmp; H6280_CYCLES(7); RD_IDX; ORA; } // 7 ORA IDX |
| 42 | | OP(_021) { int tmp; H6280_CYCLES(7); RD_IDX; AND; } // 7 AND IDX |
| 43 | | OP(_041) { int tmp; H6280_CYCLES(7); RD_IDX; EOR; } // 7 EOR IDX |
| 44 | | OP(_061) { int tmp; H6280_CYCLES(7); RD_IDX; ADC; } // 7 ADC IDX |
| 45 | | OP(_081) { int tmp; H6280_CYCLES(7); STA; WR_IDX; } // 7 STA IDX |
| 46 | | OP(_0a1) { int tmp; H6280_CYCLES(7); RD_IDX; LDA; } // 7 LDA IDX |
| 47 | | OP(_0c1) { int tmp; H6280_CYCLES(7); RD_IDX; CMP; } // 7 CMP IDX |
| 48 | | OP(_0e1) { int tmp; H6280_CYCLES(7); RD_IDX; SBC; } // 7 SBC IDX |
| 49 | | |
| 50 | | OP(_011) { int tmp; H6280_CYCLES(7); RD_IDY; ORA; } // 7 ORA IDY |
| 51 | | OP(_031) { int tmp; H6280_CYCLES(7); RD_IDY; AND; } // 7 AND IDY |
| 52 | | OP(_051) { int tmp; H6280_CYCLES(7); RD_IDY; EOR; } // 7 EOR IDY |
| 53 | | OP(_071) { int tmp; H6280_CYCLES(7); RD_IDY; ADC; } // 7 ADC AZP |
| 54 | | OP(_091) { int tmp; H6280_CYCLES(7); STA; WR_IDY; } // 7 STA IDY |
| 55 | | OP(_0b1) { int tmp; H6280_CYCLES(7); RD_IDY; LDA; } // 7 LDA IDY |
| 56 | | OP(_0d1) { int tmp; H6280_CYCLES(7); RD_IDY; CMP; } // 7 CMP IDY |
| 57 | | OP(_0f1) { int tmp; H6280_CYCLES(7); RD_IDY; SBC; } // 7 SBC IDY |
| 58 | | |
| 59 | | OP(_002) { int tmp; H6280_CYCLES(3); SXY; } // 3 SXY |
| 60 | | OP(_022) { int tmp; H6280_CYCLES(3); SAX; } // 3 SAX |
| 61 | | OP(_042) { int tmp; H6280_CYCLES(3); SAY; } // 3 SAY |
| 62 | | OP(_062) { H6280_CYCLES(2); CLA; } // 2 CLA |
| 63 | | OP(_082) { H6280_CYCLES(2); CLX; } // 2 CLX |
| 64 | | OP(_0a2) { int tmp; H6280_CYCLES(2); RD_IMM; LDX; } // 2 LDX IMM |
| 65 | | OP(_0c2) { H6280_CYCLES(2); CLY; } // 2 CLY |
| 66 | | OP(_0e2) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 67 | | |
| 68 | | OP(_012) { int tmp; H6280_CYCLES(7); RD_ZPI; ORA; } // 7 ORA ZPI |
| 69 | | OP(_032) { int tmp; H6280_CYCLES(7); RD_ZPI; AND; } // 7 AND ZPI |
| 70 | | OP(_052) { int tmp; H6280_CYCLES(7); RD_ZPI; EOR; } // 7 EOR ZPI |
| 71 | | OP(_072) { int tmp; H6280_CYCLES(7); RD_ZPI; ADC; } // 7 ADC ZPI |
| 72 | | OP(_092) { int tmp; H6280_CYCLES(7); STA; WR_ZPI; } // 7 STA ZPI |
| 73 | | OP(_0b2) { int tmp; H6280_CYCLES(7); RD_ZPI; LDA; } // 7 LDA ZPI |
| 74 | | OP(_0d2) { int tmp; H6280_CYCLES(7); RD_ZPI; CMP; } // 7 CMP ZPI |
| 75 | | OP(_0f2) { int tmp; H6280_CYCLES(7); RD_ZPI; SBC; } // 7 SBC ZPI |
| 76 | | |
| 77 | | OP(_003) { int tmp; H6280_CYCLES(5); RD_IMM; ST0; } // 4 + 1 penalty cycle ST0 IMM |
| 78 | | OP(_023) { int tmp; H6280_CYCLES(5); RD_IMM; ST2; } // 4 + 1 penalty cycle ST2 IMM |
| 79 | | OP(_043) { int tmp; H6280_CYCLES(4); RD_IMM; TMA; } // 4 TMA |
| 80 | | OP(_063) { H6280_CYCLES(4); NOP; } // 2 NOP |
| 81 | | OP(_083) { int tmp,tmp2; H6280_CYCLES(7); RD_IMM2; RD_ZPG; TST; } // 7 TST IMM,ZPG |
| 82 | | OP(_0a3) { int tmp,tmp2; H6280_CYCLES(7); RD_IMM2; RD_ZPX; TST; } // 7 TST IMM,ZPX |
| 83 | | OP(_0c3) { int to,from,length; TDD; } // 6*l+17 TDD XFER |
| 84 | | OP(_0e3) { int to,from,length,alternate; TIA; } // 6*l+17 TIA XFER |
| 85 | | |
| 86 | | OP(_013) { int tmp; H6280_CYCLES(5); RD_IMM; ST1; } // 4 + 1 penalty cycle ST1 |
| 87 | | OP(_033) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 88 | | OP(_053) { int tmp; H6280_CYCLES(5); RD_IMM; TAM; } // 5 TAM IMM |
| 89 | | OP(_073) { int to,from,length; TII; } // 6*l+17 TII XFER |
| 90 | | OP(_093) { int tmp,tmp2; H6280_CYCLES(8); RD_IMM2; RD_ABS; TST; } // 8 TST IMM,ABS |
| 91 | | OP(_0b3) { int tmp,tmp2; H6280_CYCLES(8); RD_IMM2; RD_ABX; TST; } // 8 TST IMM,ABX |
| 92 | | OP(_0d3) { int to,from,length; TIN; } // 6*l+17 TIN XFER |
| 93 | | OP(_0f3) { int to,from,length,alternate; TAI; } // 6*l+17 TAI XFER |
| 94 | | |
| 95 | | OP(_004) { int tmp; H6280_CYCLES(6); RD_ZPG; TSB; WB_EAZ; } // 6 TSB ZPG |
| 96 | | OP(_024) { int tmp; H6280_CYCLES(4); RD_ZPG; HBIT; } // 4 BIT ZPG |
| 97 | | OP(_044) { int tmp; BSR; } // 8 BSR REL |
| 98 | | OP(_064) { int tmp; H6280_CYCLES(4); STZ; WR_ZPG; } // 4 STZ ZPG |
| 99 | | OP(_084) { int tmp; H6280_CYCLES(4); STY; WR_ZPG; } // 4 STY ZPG |
| 100 | | OP(_0a4) { int tmp; H6280_CYCLES(4); RD_ZPG; LDY; } // 4 LDY ZPG |
| 101 | | OP(_0c4) { int tmp; H6280_CYCLES(4); RD_ZPG; CPY; } // 4 CPY ZPG |
| 102 | | OP(_0e4) { int tmp; H6280_CYCLES(4); RD_ZPG; CPX; } // 4 CPX ZPG |
| 103 | | |
| 104 | | OP(_014) { int tmp; H6280_CYCLES(6); RD_ZPG; TRB; WB_EAZ; } // 6 TRB ZPG |
| 105 | | OP(_034) { int tmp; H6280_CYCLES(4); RD_ZPX; HBIT; } // 4 BIT ZPX |
| 106 | | OP(_054) { H6280_CYCLES(3); CSL; } // 3 CSL |
| 107 | | OP(_074) { int tmp; H6280_CYCLES(4); STZ; WR_ZPX; } // 4 STZ ZPX |
| 108 | | OP(_094) { int tmp; H6280_CYCLES(4); STY; WR_ZPX; } // 4 STY ZPX |
| 109 | | OP(_0b4) { int tmp; H6280_CYCLES(4); RD_ZPX; LDY; } // 4 LDY ZPX |
| 110 | | OP(_0d4) { H6280_CYCLES(3); CSH; } // 3 CSH |
| 111 | | OP(_0f4) { H6280_CYCLES(2); SET; } // 2 SET |
| 112 | | |
| 113 | | OP(_005) { int tmp; H6280_CYCLES(4); RD_ZPG; ORA; } // 4 ORA ZPG |
| 114 | | OP(_025) { int tmp; H6280_CYCLES(4); RD_ZPG; AND; } // 4 AND ZPG |
| 115 | | OP(_045) { int tmp; H6280_CYCLES(4); RD_ZPG; EOR; } // 4 EOR ZPG |
| 116 | | OP(_065) { int tmp; H6280_CYCLES(4); RD_ZPG; ADC; } // 4 ADC ZPG |
| 117 | | OP(_085) { int tmp; H6280_CYCLES(4); STA; WR_ZPG; } // 4 STA ZPG |
| 118 | | OP(_0a5) { int tmp; H6280_CYCLES(4); RD_ZPG; LDA; } // 4 LDA ZPG |
| 119 | | OP(_0c5) { int tmp; H6280_CYCLES(4); RD_ZPG; CMP; } // 4 CMP ZPG |
| 120 | | OP(_0e5) { int tmp; H6280_CYCLES(4); RD_ZPG; SBC; } // 4 SBC ZPG |
| 121 | | |
| 122 | | OP(_015) { int tmp; H6280_CYCLES(4); RD_ZPX; ORA; } // 4 ORA ZPX |
| 123 | | OP(_035) { int tmp; H6280_CYCLES(4); RD_ZPX; AND; } // 4 AND ZPX |
| 124 | | OP(_055) { int tmp; H6280_CYCLES(4); RD_ZPX; EOR; } // 4 EOR ZPX |
| 125 | | OP(_075) { int tmp; H6280_CYCLES(4); RD_ZPX; ADC; } // 4 ADC ZPX |
| 126 | | OP(_095) { int tmp; H6280_CYCLES(4); STA; WR_ZPX; } // 4 STA ZPX |
| 127 | | OP(_0b5) { int tmp; H6280_CYCLES(4); RD_ZPX; LDA; } // 4 LDA ZPX |
| 128 | | OP(_0d5) { int tmp; H6280_CYCLES(4); RD_ZPX; CMP; } // 4 CMP ZPX |
| 129 | | OP(_0f5) { int tmp; H6280_CYCLES(4); RD_ZPX; SBC; } // 4 SBC ZPX |
| 130 | | |
| 131 | | OP(_006) { int tmp; H6280_CYCLES(6); RD_ZPG; ASL; WB_EAZ; } // 6 ASL ZPG |
| 132 | | OP(_026) { int tmp; H6280_CYCLES(6); RD_ZPG; ROL; WB_EAZ; } // 6 ROL ZPG |
| 133 | | OP(_046) { int tmp; H6280_CYCLES(6); RD_ZPG; LSR; WB_EAZ; } // 6 LSR ZPG |
| 134 | | OP(_066) { int tmp; H6280_CYCLES(6); RD_ZPG; ROR; WB_EAZ; } // 6 ROR ZPG |
| 135 | | OP(_086) { int tmp; H6280_CYCLES(4); STX; WR_ZPG; } // 4 STX ZPG |
| 136 | | OP(_0a6) { int tmp; H6280_CYCLES(4); RD_ZPG; LDX; } // 4 LDX ZPG |
| 137 | | OP(_0c6) { int tmp; H6280_CYCLES(6); RD_ZPG; DEC; WB_EAZ; } // 6 DEC ZPG |
| 138 | | OP(_0e6) { int tmp; H6280_CYCLES(6); RD_ZPG; INC; WB_EAZ; } // 6 INC ZPG |
| 139 | | |
| 140 | | OP(_016) { int tmp; H6280_CYCLES(6); RD_ZPX; ASL; WB_EAZ; } // 6 ASL ZPX |
| 141 | | OP(_036) { int tmp; H6280_CYCLES(6); RD_ZPX; ROL; WB_EAZ; } // 6 ROL ZPX |
| 142 | | OP(_056) { int tmp; H6280_CYCLES(6); RD_ZPX; LSR; WB_EAZ; } // 6 LSR ZPX |
| 143 | | OP(_076) { int tmp; H6280_CYCLES(6); RD_ZPX; ROR; WB_EAZ; } // 6 ROR ZPX |
| 144 | | OP(_096) { int tmp; H6280_CYCLES(4); STX; WR_ZPY; } // 4 STX ZPY |
| 145 | | OP(_0b6) { int tmp; H6280_CYCLES(4); RD_ZPY; LDX; } // 4 LDX ZPY |
| 146 | | OP(_0d6) { int tmp; H6280_CYCLES(6); RD_ZPX; DEC; WB_EAZ; } // 6 DEC ZPX |
| 147 | | OP(_0f6) { int tmp; H6280_CYCLES(6); RD_ZPX; INC; WB_EAZ; } // 6 INC ZPX |
| 148 | | |
| 149 | | OP(_007) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(0);WB_EAZ;} // 7 RMB0 ZPG |
| 150 | | OP(_027) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(2);WB_EAZ;} // 7 RMB2 ZPG |
| 151 | | OP(_047) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(4);WB_EAZ;} // 7 RMB4 ZPG |
| 152 | | OP(_067) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(6);WB_EAZ;} // 7 RMB6 ZPG |
| 153 | | OP(_087) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(0);WB_EAZ;} // 7 SMB0 ZPG |
| 154 | | OP(_0a7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(2);WB_EAZ;} // 7 SMB2 ZPG |
| 155 | | OP(_0c7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(4);WB_EAZ;} // 7 SMB4 ZPG |
| 156 | | OP(_0e7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(6);WB_EAZ;} // 7 SMB6 ZPG |
| 157 | | |
| 158 | | OP(_017) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(1);WB_EAZ;} // 7 RMB1 ZPG |
| 159 | | OP(_037) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(3);WB_EAZ;} // 7 RMB3 ZPG |
| 160 | | OP(_057) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(5);WB_EAZ;} // 7 RMB5 ZPG |
| 161 | | OP(_077) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(7);WB_EAZ;} // 7 RMB7 ZPG |
| 162 | | OP(_097) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(1);WB_EAZ;} // 7 SMB1 ZPG |
| 163 | | OP(_0b7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(3);WB_EAZ;} // 7 SMB3 ZPG |
| 164 | | OP(_0d7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(5);WB_EAZ;} // 7 SMB5 ZPG |
| 165 | | OP(_0f7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(7);WB_EAZ;} // 7 SMB7 ZPG |
| 166 | | |
| 167 | | OP(_008) { H6280_CYCLES(3); PHP; } // 3 PHP |
| 168 | | OP(_028) { H6280_CYCLES(4); PLP; } // 4 PLP |
| 169 | | OP(_048) { H6280_CYCLES(3); PHA; } // 3 PHA |
| 170 | | OP(_068) { H6280_CYCLES(4); PLA; } // 4 PLA |
| 171 | | OP(_088) { H6280_CYCLES(2); DEY; } // 2 DEY |
| 172 | | OP(_0a8) { H6280_CYCLES(2); TAY; } // 2 TAY |
| 173 | | OP(_0c8) { H6280_CYCLES(2); INY; } // 2 INY |
| 174 | | OP(_0e8) { H6280_CYCLES(2); INX; } // 2 INX |
| 175 | | |
| 176 | | OP(_018) { H6280_CYCLES(2); CLC; } // 2 CLC |
| 177 | | OP(_038) { H6280_CYCLES(2); SEC; } // 2 SEC |
| 178 | | OP(_058) { H6280_CYCLES(2); CLI; } // 2 CLI |
| 179 | | OP(_078) { H6280_CYCLES(2); SEI; } // 2 SEI |
| 180 | | OP(_098) { H6280_CYCLES(2); TYA; } // 2 TYA |
| 181 | | OP(_0b8) { H6280_CYCLES(2); CLV; } // 2 CLV |
| 182 | | OP(_0d8) { H6280_CYCLES(2); CLD; } // 2 CLD |
| 183 | | OP(_0f8) { H6280_CYCLES(2); SED; } // 2 SED |
| 184 | | |
| 185 | | OP(_009) { int tmp; H6280_CYCLES(2); RD_IMM; ORA; } // 2 ORA IMM |
| 186 | | OP(_029) { int tmp; H6280_CYCLES(2); RD_IMM; AND; } // 2 AND IMM |
| 187 | | OP(_049) { int tmp; H6280_CYCLES(2); RD_IMM; EOR; } // 2 EOR IMM |
| 188 | | OP(_069) { int tmp; H6280_CYCLES(2); RD_IMM; ADC; } // 2 ADC IMM |
| 189 | | OP(_089) { int tmp; H6280_CYCLES(2); RD_IMM; HBIT; } // 2 BIT IMM |
| 190 | | OP(_0a9) { int tmp; H6280_CYCLES(2); RD_IMM; LDA; } // 2 LDA IMM |
| 191 | | OP(_0c9) { int tmp; H6280_CYCLES(2); RD_IMM; CMP; } // 2 CMP IMM |
| 192 | | OP(_0e9) { int tmp; H6280_CYCLES(2); RD_IMM; SBC; } // 2 SBC IMM |
| 193 | | |
| 194 | | OP(_019) { int tmp; H6280_CYCLES(5); RD_ABY; ORA; } // 5 ORA ABY |
| 195 | | OP(_039) { int tmp; H6280_CYCLES(5); RD_ABY; AND; } // 5 AND ABY |
| 196 | | OP(_059) { int tmp; H6280_CYCLES(5); RD_ABY; EOR; } // 5 EOR ABY |
| 197 | | OP(_079) { int tmp; H6280_CYCLES(5); RD_ABY; ADC; } // 5 ADC ABY |
| 198 | | OP(_099) { int tmp; H6280_CYCLES(5); STA; WR_ABY; } // 5 STA ABY |
| 199 | | OP(_0b9) { int tmp; H6280_CYCLES(5); RD_ABY; LDA; } // 5 LDA ABY |
| 200 | | OP(_0d9) { int tmp; H6280_CYCLES(5); RD_ABY; CMP; } // 5 CMP ABY |
| 201 | | OP(_0f9) { int tmp; H6280_CYCLES(5); RD_ABY; SBC; } // 5 SBC ABY |
| 202 | | |
| 203 | | OP(_00a) { int tmp; H6280_CYCLES(2); RD_ACC; ASL; WB_ACC; } // 2 ASL A |
| 204 | | OP(_02a) { int tmp; H6280_CYCLES(2); RD_ACC; ROL; WB_ACC; } // 2 ROL A |
| 205 | | OP(_04a) { int tmp; H6280_CYCLES(2); RD_ACC; LSR; WB_ACC; } // 2 LSR A |
| 206 | | OP(_06a) { int tmp; H6280_CYCLES(2); RD_ACC; ROR; WB_ACC; } // 2 ROR A |
| 207 | | OP(_08a) { H6280_CYCLES(2); TXA; } // 2 TXA |
| 208 | | OP(_0aa) { H6280_CYCLES(2); TAX; } // 2 TAX |
| 209 | | OP(_0ca) { H6280_CYCLES(2); DEX; } // 2 DEX |
| 210 | | OP(_0ea) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 211 | | |
| 212 | | OP(_01a) { H6280_CYCLES(2); INA; } // 2 INC A |
| 213 | | OP(_03a) { H6280_CYCLES(2); DEA; } // 2 DEC A |
| 214 | | OP(_05a) { H6280_CYCLES(3); PHY; } // 3 PHY |
| 215 | | OP(_07a) { H6280_CYCLES(4); PLY; } // 4 PLY |
| 216 | | OP(_09a) { H6280_CYCLES(2); TXS; } // 2 TXS |
| 217 | | OP(_0ba) { H6280_CYCLES(2); TSX; } // 2 TSX |
| 218 | | OP(_0da) { H6280_CYCLES(3); PHX; } // 3 PHX |
| 219 | | OP(_0fa) { H6280_CYCLES(4); PLX; } // 4 PLX |
| 220 | | |
| 221 | | OP(_00b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 222 | | OP(_02b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 223 | | OP(_04b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 224 | | OP(_06b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 225 | | OP(_08b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 226 | | OP(_0ab) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 227 | | OP(_0cb) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 228 | | OP(_0eb) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 229 | | |
| 230 | | OP(_01b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 231 | | OP(_03b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 232 | | OP(_05b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 233 | | OP(_07b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 234 | | OP(_09b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 235 | | OP(_0bb) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 236 | | OP(_0db) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 237 | | OP(_0fb) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 238 | | |
| 239 | | OP(_00c) { int tmp; H6280_CYCLES(7); RD_ABS; TSB; WB_EA; } // 7 TSB ABS |
| 240 | | OP(_02c) { int tmp; H6280_CYCLES(5); RD_ABS; HBIT; } // 5 BIT ABS |
| 241 | | OP(_04c) { H6280_CYCLES(4); EA_ABS; JMP; } // 4 JMP ABS |
| 242 | | OP(_06c) { int tmp; H6280_CYCLES(7); EA_IND; JMP; } // 7 JMP IND |
| 243 | | OP(_08c) { int tmp; H6280_CYCLES(5); STY; WR_ABS; } // 5 STY ABS |
| 244 | | OP(_0ac) { int tmp; H6280_CYCLES(5); RD_ABS; LDY; } // 5 LDY ABS |
| 245 | | OP(_0cc) { int tmp; H6280_CYCLES(5); RD_ABS; CPY; } // 5 CPY ABS |
| 246 | | OP(_0ec) { int tmp; H6280_CYCLES(5); RD_ABS; CPX; } // 5 CPX ABS |
| 247 | | |
| 248 | | OP(_01c) { int tmp; H6280_CYCLES(7); RD_ABS; TRB; WB_EA; } // 7 TRB ABS |
| 249 | | OP(_03c) { int tmp; H6280_CYCLES(5); RD_ABX; HBIT; } // 5 BIT ABX |
| 250 | | OP(_05c) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 251 | | OP(_07c) { int tmp; H6280_CYCLES(7); EA_IAX; JMP; } // 7 JMP IAX |
| 252 | | OP(_09c) { int tmp; H6280_CYCLES(5); STZ; WR_ABS; } // 5 STZ ABS |
| 253 | | OP(_0bc) { int tmp; H6280_CYCLES(5); RD_ABX; LDY; } // 5 LDY ABX |
| 254 | | OP(_0dc) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 255 | | OP(_0fc) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 256 | | |
| 257 | | OP(_00d) { int tmp; H6280_CYCLES(5); RD_ABS; ORA; } // 5 ORA ABS |
| 258 | | OP(_02d) { int tmp; H6280_CYCLES(5); RD_ABS; AND; } // 5 AND ABS |
| 259 | | OP(_04d) { int tmp; H6280_CYCLES(5); RD_ABS; EOR; } // 5 EOR ABS |
| 260 | | OP(_06d) { int tmp; H6280_CYCLES(5); RD_ABS; ADC; } // 5 ADC ABS |
| 261 | | OP(_08d) { int tmp; H6280_CYCLES(5); STA; WR_ABS; } // 5 STA ABS |
| 262 | | OP(_0ad) { int tmp; H6280_CYCLES(5); RD_ABS; LDA; } // 5 LDA ABS |
| 263 | | OP(_0cd) { int tmp; H6280_CYCLES(5); RD_ABS; CMP; } // 5 CMP ABS |
| 264 | | OP(_0ed) { int tmp; H6280_CYCLES(5); RD_ABS; SBC; } // 5 SBC ABS |
| 265 | | |
| 266 | | OP(_01d) { int tmp; H6280_CYCLES(5); RD_ABX; ORA; } // 5 ORA ABX |
| 267 | | OP(_03d) { int tmp; H6280_CYCLES(5); RD_ABX; AND; } // 5 AND ABX |
| 268 | | OP(_05d) { int tmp; H6280_CYCLES(5); RD_ABX; EOR; } // 5 EOR ABX |
| 269 | | OP(_07d) { int tmp; H6280_CYCLES(5); RD_ABX; ADC; } // 5 ADC ABX |
| 270 | | OP(_09d) { int tmp; H6280_CYCLES(5); STA; WR_ABX; } // 5 STA ABX |
| 271 | | OP(_0bd) { int tmp; H6280_CYCLES(5); RD_ABX; LDA; } // 5 LDA ABX |
| 272 | | OP(_0dd) { int tmp; H6280_CYCLES(5); RD_ABX; CMP; } // 5 CMP ABX |
| 273 | | OP(_0fd) { int tmp; H6280_CYCLES(5); RD_ABX; SBC; } // 5 SBC ABX |
| 274 | | |
| 275 | | OP(_00e) { int tmp; H6280_CYCLES(7); RD_ABS; ASL; WB_EA; } // 7 ASL ABS |
| 276 | | OP(_02e) { int tmp; H6280_CYCLES(7); RD_ABS; ROL; WB_EA; } // 7 ROL ABS |
| 277 | | OP(_04e) { int tmp; H6280_CYCLES(7); RD_ABS; LSR; WB_EA; } // 7 LSR ABS |
| 278 | | OP(_06e) { int tmp; H6280_CYCLES(7); RD_ABS; ROR; WB_EA; } // 7 ROR ABS |
| 279 | | OP(_08e) { int tmp; H6280_CYCLES(5); STX; WR_ABS; } // 5 STX ABS |
| 280 | | OP(_0ae) { int tmp; H6280_CYCLES(5); RD_ABS; LDX; } // 5 LDX ABS |
| 281 | | OP(_0ce) { int tmp; H6280_CYCLES(7); RD_ABS; DEC; WB_EA; } // 7 DEC ABS |
| 282 | | OP(_0ee) { int tmp; H6280_CYCLES(7); RD_ABS; INC; WB_EA; } // 7 INC ABS |
| 283 | | |
| 284 | | OP(_01e) { int tmp; H6280_CYCLES(7); RD_ABX; ASL; WB_EA; } // 7 ASL ABX |
| 285 | | OP(_03e) { int tmp; H6280_CYCLES(7); RD_ABX; ROL; WB_EA; } // 7 ROL ABX |
| 286 | | OP(_05e) { int tmp; H6280_CYCLES(7); RD_ABX; LSR; WB_EA; } // 7 LSR ABX |
| 287 | | OP(_07e) { int tmp; H6280_CYCLES(7); RD_ABX; ROR; WB_EA; } // 7 ROR ABX |
| 288 | | OP(_09e) { int tmp; H6280_CYCLES(5); STZ; WR_ABX; } // 5 STZ ABX |
| 289 | | OP(_0be) { int tmp; H6280_CYCLES(5); RD_ABY; LDX; } // 5 LDX ABY |
| 290 | | OP(_0de) { int tmp; H6280_CYCLES(7); RD_ABX; DEC; WB_EA; } // 7 DEC ABX |
| 291 | | OP(_0fe) { int tmp; H6280_CYCLES(7); RD_ABX; INC; WB_EA; } // 7 INC ABX |
| 292 | | |
| 293 | | OP(_00f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(0); } // 6/8 BBR0 ZPG,REL |
| 294 | | OP(_02f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(2); } // 6/8 BBR2 ZPG,REL |
| 295 | | OP(_04f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(4); } // 6/8 BBR4 ZPG,REL |
| 296 | | OP(_06f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(6); } // 6/8 BBR6 ZPG,REL |
| 297 | | OP(_08f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(0); } // 6/8 BBS0 ZPG,REL |
| 298 | | OP(_0af) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(2); } // 6/8 BBS2 ZPG,REL |
| 299 | | OP(_0cf) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(4); } // 6/8 BBS4 ZPG,REL |
| 300 | | OP(_0ef) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(6); } // 6/8 BBS6 ZPG,REL |
| 301 | | |
| 302 | | OP(_01f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(1); } // 6/8 BBR1 ZPG,REL |
| 303 | | OP(_03f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(3); } // 6/8 BBR3 ZPG,REL |
| 304 | | OP(_05f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(5); } // 6/8 BBR5 ZPG,REL |
| 305 | | OP(_07f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(7); } // 6/8 BBR7 ZPG,REL |
| 306 | | OP(_09f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(1); } // 6/8 BBS1 ZPG,REL |
| 307 | | OP(_0bf) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(3); } // 6/8 BBS3 ZPG,REL |
| 308 | | OP(_0df) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(5); } // 6/8 BBS5 ZPG,REL |
| 309 | | OP(_0ff) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(7); } // 6/8 BBS7 ZPG,REL |
trunk/src/emu/cpu/h6280/tblh6280.inc
| r0 | r23777 | |
| 1 | /***************************************************************************** |
| 2 | |
| 3 | tblh6280.c |
| 4 | |
| 5 | Copyright Bryan McPhail, mish@tendril.co.uk |
| 6 | |
| 7 | This source code is based (with permission!) on the 6502 emulator by |
| 8 | Juergen Buchmueller. It is released as part of the Mame emulator project. |
| 9 | Let me know if you intend to use this code in any other project. |
| 10 | |
| 11 | ******************************************************************************/ |
| 12 | |
| 13 | #undef OP |
| 14 | #define OP(nnn) inline void op##nnn() |
| 15 | |
| 16 | /***************************************************************************** |
| 17 | ***************************************************************************** |
| 18 | * |
| 19 | * Hu6280 opcodes |
| 20 | * |
| 21 | ***************************************************************************** |
| 22 | * op temp cycles rdmem opc wrmem ******************/ |
| 23 | OP(_000) { H6280_CYCLES(8); BRK; } // 8 BRK |
| 24 | OP(_020) { H6280_CYCLES(7); EA_ABS; JSR; } // 7 JSR ABS |
| 25 | OP(_040) { H6280_CYCLES(7); RTI; } // 7 RTI |
| 26 | OP(_060) { H6280_CYCLES(7); RTS; } // 7 RTS |
| 27 | OP(_080) { int tmp; BRA(1); } // 4 BRA REL |
| 28 | OP(_0a0) { int tmp; H6280_CYCLES(2); RD_IMM; LDY; } // 2 LDY IMM |
| 29 | OP(_0c0) { int tmp; H6280_CYCLES(2); RD_IMM; CPY; } // 2 CPY IMM |
| 30 | OP(_0e0) { int tmp; H6280_CYCLES(2); RD_IMM; CPX; } // 2 CPX IMM |
| 31 | |
| 32 | OP(_010) { int tmp; BPL; } // 2/4 BPL REL |
| 33 | OP(_030) { int tmp; BMI; } // 2/4 BMI REL |
| 34 | OP(_050) { int tmp; BVC; } // 2/4 BVC REL |
| 35 | OP(_070) { int tmp; BVS; } // 2/4 BVS REL |
| 36 | OP(_090) { int tmp; BCC; } // 2/4 BCC REL |
| 37 | OP(_0b0) { int tmp; BCS; } // 2/4 BCS REL |
| 38 | OP(_0d0) { int tmp; BNE; } // 2/4 BNE REL |
| 39 | OP(_0f0) { int tmp; BEQ; } // 2/4 BEQ REL |
| 40 | |
| 41 | OP(_001) { int tmp; H6280_CYCLES(7); RD_IDX; ORA; } // 7 ORA IDX |
| 42 | OP(_021) { int tmp; H6280_CYCLES(7); RD_IDX; AND; } // 7 AND IDX |
| 43 | OP(_041) { int tmp; H6280_CYCLES(7); RD_IDX; EOR; } // 7 EOR IDX |
| 44 | OP(_061) { int tmp; H6280_CYCLES(7); RD_IDX; ADC; } // 7 ADC IDX |
| 45 | OP(_081) { int tmp; H6280_CYCLES(7); STA; WR_IDX; } // 7 STA IDX |
| 46 | OP(_0a1) { int tmp; H6280_CYCLES(7); RD_IDX; LDA; } // 7 LDA IDX |
| 47 | OP(_0c1) { int tmp; H6280_CYCLES(7); RD_IDX; CMP; } // 7 CMP IDX |
| 48 | OP(_0e1) { int tmp; H6280_CYCLES(7); RD_IDX; SBC; } // 7 SBC IDX |
| 49 | |
| 50 | OP(_011) { int tmp; H6280_CYCLES(7); RD_IDY; ORA; } // 7 ORA IDY |
| 51 | OP(_031) { int tmp; H6280_CYCLES(7); RD_IDY; AND; } // 7 AND IDY |
| 52 | OP(_051) { int tmp; H6280_CYCLES(7); RD_IDY; EOR; } // 7 EOR IDY |
| 53 | OP(_071) { int tmp; H6280_CYCLES(7); RD_IDY; ADC; } // 7 ADC AZP |
| 54 | OP(_091) { int tmp; H6280_CYCLES(7); STA; WR_IDY; } // 7 STA IDY |
| 55 | OP(_0b1) { int tmp; H6280_CYCLES(7); RD_IDY; LDA; } // 7 LDA IDY |
| 56 | OP(_0d1) { int tmp; H6280_CYCLES(7); RD_IDY; CMP; } // 7 CMP IDY |
| 57 | OP(_0f1) { int tmp; H6280_CYCLES(7); RD_IDY; SBC; } // 7 SBC IDY |
| 58 | |
| 59 | OP(_002) { int tmp; H6280_CYCLES(3); SXY; } // 3 SXY |
| 60 | OP(_022) { int tmp; H6280_CYCLES(3); SAX; } // 3 SAX |
| 61 | OP(_042) { int tmp; H6280_CYCLES(3); SAY; } // 3 SAY |
| 62 | OP(_062) { H6280_CYCLES(2); CLA; } // 2 CLA |
| 63 | OP(_082) { H6280_CYCLES(2); CLX; } // 2 CLX |
| 64 | OP(_0a2) { int tmp; H6280_CYCLES(2); RD_IMM; LDX; } // 2 LDX IMM |
| 65 | OP(_0c2) { H6280_CYCLES(2); CLY; } // 2 CLY |
| 66 | OP(_0e2) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 67 | |
| 68 | OP(_012) { int tmp; H6280_CYCLES(7); RD_ZPI; ORA; } // 7 ORA ZPI |
| 69 | OP(_032) { int tmp; H6280_CYCLES(7); RD_ZPI; AND; } // 7 AND ZPI |
| 70 | OP(_052) { int tmp; H6280_CYCLES(7); RD_ZPI; EOR; } // 7 EOR ZPI |
| 71 | OP(_072) { int tmp; H6280_CYCLES(7); RD_ZPI; ADC; } // 7 ADC ZPI |
| 72 | OP(_092) { int tmp; H6280_CYCLES(7); STA; WR_ZPI; } // 7 STA ZPI |
| 73 | OP(_0b2) { int tmp; H6280_CYCLES(7); RD_ZPI; LDA; } // 7 LDA ZPI |
| 74 | OP(_0d2) { int tmp; H6280_CYCLES(7); RD_ZPI; CMP; } // 7 CMP ZPI |
| 75 | OP(_0f2) { int tmp; H6280_CYCLES(7); RD_ZPI; SBC; } // 7 SBC ZPI |
| 76 | |
| 77 | OP(_003) { int tmp; H6280_CYCLES(5); RD_IMM; ST0; } // 4 + 1 penalty cycle ST0 IMM |
| 78 | OP(_023) { int tmp; H6280_CYCLES(5); RD_IMM; ST2; } // 4 + 1 penalty cycle ST2 IMM |
| 79 | OP(_043) { int tmp; H6280_CYCLES(4); RD_IMM; TMA; } // 4 TMA |
| 80 | OP(_063) { H6280_CYCLES(4); NOP; } // 2 NOP |
| 81 | OP(_083) { int tmp,tmp2; H6280_CYCLES(7); RD_IMM2; RD_ZPG; TST; } // 7 TST IMM,ZPG |
| 82 | OP(_0a3) { int tmp,tmp2; H6280_CYCLES(7); RD_IMM2; RD_ZPX; TST; } // 7 TST IMM,ZPX |
| 83 | OP(_0c3) { int to,from,length; TDD; } // 6*l+17 TDD XFER |
| 84 | OP(_0e3) { int to,from,length,alternate; TIA; } // 6*l+17 TIA XFER |
| 85 | |
| 86 | OP(_013) { int tmp; H6280_CYCLES(5); RD_IMM; ST1; } // 4 + 1 penalty cycle ST1 |
| 87 | OP(_033) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 88 | OP(_053) { int tmp; H6280_CYCLES(5); RD_IMM; TAM; } // 5 TAM IMM |
| 89 | OP(_073) { int to,from,length; TII; } // 6*l+17 TII XFER |
| 90 | OP(_093) { int tmp,tmp2; H6280_CYCLES(8); RD_IMM2; RD_ABS; TST; } // 8 TST IMM,ABS |
| 91 | OP(_0b3) { int tmp,tmp2; H6280_CYCLES(8); RD_IMM2; RD_ABX; TST; } // 8 TST IMM,ABX |
| 92 | OP(_0d3) { int to,from,length; TIN; } // 6*l+17 TIN XFER |
| 93 | OP(_0f3) { int to,from,length,alternate; TAI; } // 6*l+17 TAI XFER |
| 94 | |
| 95 | OP(_004) { int tmp; H6280_CYCLES(6); RD_ZPG; TSB; WB_EAZ; } // 6 TSB ZPG |
| 96 | OP(_024) { int tmp; H6280_CYCLES(4); RD_ZPG; HBIT; } // 4 BIT ZPG |
| 97 | OP(_044) { int tmp; BSR; } // 8 BSR REL |
| 98 | OP(_064) { int tmp; H6280_CYCLES(4); STZ; WR_ZPG; } // 4 STZ ZPG |
| 99 | OP(_084) { int tmp; H6280_CYCLES(4); STY; WR_ZPG; } // 4 STY ZPG |
| 100 | OP(_0a4) { int tmp; H6280_CYCLES(4); RD_ZPG; LDY; } // 4 LDY ZPG |
| 101 | OP(_0c4) { int tmp; H6280_CYCLES(4); RD_ZPG; CPY; } // 4 CPY ZPG |
| 102 | OP(_0e4) { int tmp; H6280_CYCLES(4); RD_ZPG; CPX; } // 4 CPX ZPG |
| 103 | |
| 104 | OP(_014) { int tmp; H6280_CYCLES(6); RD_ZPG; TRB; WB_EAZ; } // 6 TRB ZPG |
| 105 | OP(_034) { int tmp; H6280_CYCLES(4); RD_ZPX; HBIT; } // 4 BIT ZPX |
| 106 | OP(_054) { H6280_CYCLES(3); CSL; } // 3 CSL |
| 107 | OP(_074) { int tmp; H6280_CYCLES(4); STZ; WR_ZPX; } // 4 STZ ZPX |
| 108 | OP(_094) { int tmp; H6280_CYCLES(4); STY; WR_ZPX; } // 4 STY ZPX |
| 109 | OP(_0b4) { int tmp; H6280_CYCLES(4); RD_ZPX; LDY; } // 4 LDY ZPX |
| 110 | OP(_0d4) { H6280_CYCLES(3); CSH; } // 3 CSH |
| 111 | OP(_0f4) { H6280_CYCLES(2); SET; } // 2 SET |
| 112 | |
| 113 | OP(_005) { int tmp; H6280_CYCLES(4); RD_ZPG; ORA; } // 4 ORA ZPG |
| 114 | OP(_025) { int tmp; H6280_CYCLES(4); RD_ZPG; AND; } // 4 AND ZPG |
| 115 | OP(_045) { int tmp; H6280_CYCLES(4); RD_ZPG; EOR; } // 4 EOR ZPG |
| 116 | OP(_065) { int tmp; H6280_CYCLES(4); RD_ZPG; ADC; } // 4 ADC ZPG |
| 117 | OP(_085) { int tmp; H6280_CYCLES(4); STA; WR_ZPG; } // 4 STA ZPG |
| 118 | OP(_0a5) { int tmp; H6280_CYCLES(4); RD_ZPG; LDA; } // 4 LDA ZPG |
| 119 | OP(_0c5) { int tmp; H6280_CYCLES(4); RD_ZPG; CMP; } // 4 CMP ZPG |
| 120 | OP(_0e5) { int tmp; H6280_CYCLES(4); RD_ZPG; SBC; } // 4 SBC ZPG |
| 121 | |
| 122 | OP(_015) { int tmp; H6280_CYCLES(4); RD_ZPX; ORA; } // 4 ORA ZPX |
| 123 | OP(_035) { int tmp; H6280_CYCLES(4); RD_ZPX; AND; } // 4 AND ZPX |
| 124 | OP(_055) { int tmp; H6280_CYCLES(4); RD_ZPX; EOR; } // 4 EOR ZPX |
| 125 | OP(_075) { int tmp; H6280_CYCLES(4); RD_ZPX; ADC; } // 4 ADC ZPX |
| 126 | OP(_095) { int tmp; H6280_CYCLES(4); STA; WR_ZPX; } // 4 STA ZPX |
| 127 | OP(_0b5) { int tmp; H6280_CYCLES(4); RD_ZPX; LDA; } // 4 LDA ZPX |
| 128 | OP(_0d5) { int tmp; H6280_CYCLES(4); RD_ZPX; CMP; } // 4 CMP ZPX |
| 129 | OP(_0f5) { int tmp; H6280_CYCLES(4); RD_ZPX; SBC; } // 4 SBC ZPX |
| 130 | |
| 131 | OP(_006) { int tmp; H6280_CYCLES(6); RD_ZPG; ASL; WB_EAZ; } // 6 ASL ZPG |
| 132 | OP(_026) { int tmp; H6280_CYCLES(6); RD_ZPG; ROL; WB_EAZ; } // 6 ROL ZPG |
| 133 | OP(_046) { int tmp; H6280_CYCLES(6); RD_ZPG; LSR; WB_EAZ; } // 6 LSR ZPG |
| 134 | OP(_066) { int tmp; H6280_CYCLES(6); RD_ZPG; ROR; WB_EAZ; } // 6 ROR ZPG |
| 135 | OP(_086) { int tmp; H6280_CYCLES(4); STX; WR_ZPG; } // 4 STX ZPG |
| 136 | OP(_0a6) { int tmp; H6280_CYCLES(4); RD_ZPG; LDX; } // 4 LDX ZPG |
| 137 | OP(_0c6) { int tmp; H6280_CYCLES(6); RD_ZPG; DEC; WB_EAZ; } // 6 DEC ZPG |
| 138 | OP(_0e6) { int tmp; H6280_CYCLES(6); RD_ZPG; INC; WB_EAZ; } // 6 INC ZPG |
| 139 | |
| 140 | OP(_016) { int tmp; H6280_CYCLES(6); RD_ZPX; ASL; WB_EAZ; } // 6 ASL ZPX |
| 141 | OP(_036) { int tmp; H6280_CYCLES(6); RD_ZPX; ROL; WB_EAZ; } // 6 ROL ZPX |
| 142 | OP(_056) { int tmp; H6280_CYCLES(6); RD_ZPX; LSR; WB_EAZ; } // 6 LSR ZPX |
| 143 | OP(_076) { int tmp; H6280_CYCLES(6); RD_ZPX; ROR; WB_EAZ; } // 6 ROR ZPX |
| 144 | OP(_096) { int tmp; H6280_CYCLES(4); STX; WR_ZPY; } // 4 STX ZPY |
| 145 | OP(_0b6) { int tmp; H6280_CYCLES(4); RD_ZPY; LDX; } // 4 LDX ZPY |
| 146 | OP(_0d6) { int tmp; H6280_CYCLES(6); RD_ZPX; DEC; WB_EAZ; } // 6 DEC ZPX |
| 147 | OP(_0f6) { int tmp; H6280_CYCLES(6); RD_ZPX; INC; WB_EAZ; } // 6 INC ZPX |
| 148 | |
| 149 | OP(_007) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(0);WB_EAZ;} // 7 RMB0 ZPG |
| 150 | OP(_027) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(2);WB_EAZ;} // 7 RMB2 ZPG |
| 151 | OP(_047) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(4);WB_EAZ;} // 7 RMB4 ZPG |
| 152 | OP(_067) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(6);WB_EAZ;} // 7 RMB6 ZPG |
| 153 | OP(_087) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(0);WB_EAZ;} // 7 SMB0 ZPG |
| 154 | OP(_0a7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(2);WB_EAZ;} // 7 SMB2 ZPG |
| 155 | OP(_0c7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(4);WB_EAZ;} // 7 SMB4 ZPG |
| 156 | OP(_0e7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(6);WB_EAZ;} // 7 SMB6 ZPG |
| 157 | |
| 158 | OP(_017) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(1);WB_EAZ;} // 7 RMB1 ZPG |
| 159 | OP(_037) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(3);WB_EAZ;} // 7 RMB3 ZPG |
| 160 | OP(_057) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(5);WB_EAZ;} // 7 RMB5 ZPG |
| 161 | OP(_077) { int tmp; H6280_CYCLES(7); RD_ZPG; RMB(7);WB_EAZ;} // 7 RMB7 ZPG |
| 162 | OP(_097) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(1);WB_EAZ;} // 7 SMB1 ZPG |
| 163 | OP(_0b7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(3);WB_EAZ;} // 7 SMB3 ZPG |
| 164 | OP(_0d7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(5);WB_EAZ;} // 7 SMB5 ZPG |
| 165 | OP(_0f7) { int tmp; H6280_CYCLES(7); RD_ZPG; SMB(7);WB_EAZ;} // 7 SMB7 ZPG |
| 166 | |
| 167 | OP(_008) { H6280_CYCLES(3); PHP; } // 3 PHP |
| 168 | OP(_028) { H6280_CYCLES(4); PLP; } // 4 PLP |
| 169 | OP(_048) { H6280_CYCLES(3); PHA; } // 3 PHA |
| 170 | OP(_068) { H6280_CYCLES(4); PLA; } // 4 PLA |
| 171 | OP(_088) { H6280_CYCLES(2); DEY; } // 2 DEY |
| 172 | OP(_0a8) { H6280_CYCLES(2); TAY; } // 2 TAY |
| 173 | OP(_0c8) { H6280_CYCLES(2); INY; } // 2 INY |
| 174 | OP(_0e8) { H6280_CYCLES(2); INX; } // 2 INX |
| 175 | |
| 176 | OP(_018) { H6280_CYCLES(2); CLC; } // 2 CLC |
| 177 | OP(_038) { H6280_CYCLES(2); SEC; } // 2 SEC |
| 178 | OP(_058) { H6280_CYCLES(2); CLI; } // 2 CLI |
| 179 | OP(_078) { H6280_CYCLES(2); SEI; } // 2 SEI |
| 180 | OP(_098) { H6280_CYCLES(2); TYA; } // 2 TYA |
| 181 | OP(_0b8) { H6280_CYCLES(2); CLV; } // 2 CLV |
| 182 | OP(_0d8) { H6280_CYCLES(2); CLD; } // 2 CLD |
| 183 | OP(_0f8) { H6280_CYCLES(2); SED; } // 2 SED |
| 184 | |
| 185 | OP(_009) { int tmp; H6280_CYCLES(2); RD_IMM; ORA; } // 2 ORA IMM |
| 186 | OP(_029) { int tmp; H6280_CYCLES(2); RD_IMM; AND; } // 2 AND IMM |
| 187 | OP(_049) { int tmp; H6280_CYCLES(2); RD_IMM; EOR; } // 2 EOR IMM |
| 188 | OP(_069) { int tmp; H6280_CYCLES(2); RD_IMM; ADC; } // 2 ADC IMM |
| 189 | OP(_089) { int tmp; H6280_CYCLES(2); RD_IMM; HBIT; } // 2 BIT IMM |
| 190 | OP(_0a9) { int tmp; H6280_CYCLES(2); RD_IMM; LDA; } // 2 LDA IMM |
| 191 | OP(_0c9) { int tmp; H6280_CYCLES(2); RD_IMM; CMP; } // 2 CMP IMM |
| 192 | OP(_0e9) { int tmp; H6280_CYCLES(2); RD_IMM; SBC; } // 2 SBC IMM |
| 193 | |
| 194 | OP(_019) { int tmp; H6280_CYCLES(5); RD_ABY; ORA; } // 5 ORA ABY |
| 195 | OP(_039) { int tmp; H6280_CYCLES(5); RD_ABY; AND; } // 5 AND ABY |
| 196 | OP(_059) { int tmp; H6280_CYCLES(5); RD_ABY; EOR; } // 5 EOR ABY |
| 197 | OP(_079) { int tmp; H6280_CYCLES(5); RD_ABY; ADC; } // 5 ADC ABY |
| 198 | OP(_099) { int tmp; H6280_CYCLES(5); STA; WR_ABY; } // 5 STA ABY |
| 199 | OP(_0b9) { int tmp; H6280_CYCLES(5); RD_ABY; LDA; } // 5 LDA ABY |
| 200 | OP(_0d9) { int tmp; H6280_CYCLES(5); RD_ABY; CMP; } // 5 CMP ABY |
| 201 | OP(_0f9) { int tmp; H6280_CYCLES(5); RD_ABY; SBC; } // 5 SBC ABY |
| 202 | |
| 203 | OP(_00a) { int tmp; H6280_CYCLES(2); RD_ACC; ASL; WB_ACC; } // 2 ASL A |
| 204 | OP(_02a) { int tmp; H6280_CYCLES(2); RD_ACC; ROL; WB_ACC; } // 2 ROL A |
| 205 | OP(_04a) { int tmp; H6280_CYCLES(2); RD_ACC; LSR; WB_ACC; } // 2 LSR A |
| 206 | OP(_06a) { int tmp; H6280_CYCLES(2); RD_ACC; ROR; WB_ACC; } // 2 ROR A |
| 207 | OP(_08a) { H6280_CYCLES(2); TXA; } // 2 TXA |
| 208 | OP(_0aa) { H6280_CYCLES(2); TAX; } // 2 TAX |
| 209 | OP(_0ca) { H6280_CYCLES(2); DEX; } // 2 DEX |
| 210 | OP(_0ea) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 211 | |
| 212 | OP(_01a) { H6280_CYCLES(2); INA; } // 2 INC A |
| 213 | OP(_03a) { H6280_CYCLES(2); DEA; } // 2 DEC A |
| 214 | OP(_05a) { H6280_CYCLES(3); PHY; } // 3 PHY |
| 215 | OP(_07a) { H6280_CYCLES(4); PLY; } // 4 PLY |
| 216 | OP(_09a) { H6280_CYCLES(2); TXS; } // 2 TXS |
| 217 | OP(_0ba) { H6280_CYCLES(2); TSX; } // 2 TSX |
| 218 | OP(_0da) { H6280_CYCLES(3); PHX; } // 3 PHX |
| 219 | OP(_0fa) { H6280_CYCLES(4); PLX; } // 4 PLX |
| 220 | |
| 221 | OP(_00b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 222 | OP(_02b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 223 | OP(_04b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 224 | OP(_06b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 225 | OP(_08b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 226 | OP(_0ab) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 227 | OP(_0cb) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 228 | OP(_0eb) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 229 | |
| 230 | OP(_01b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 231 | OP(_03b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 232 | OP(_05b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 233 | OP(_07b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 234 | OP(_09b) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 235 | OP(_0bb) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 236 | OP(_0db) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 237 | OP(_0fb) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 238 | |
| 239 | OP(_00c) { int tmp; H6280_CYCLES(7); RD_ABS; TSB; WB_EA; } // 7 TSB ABS |
| 240 | OP(_02c) { int tmp; H6280_CYCLES(5); RD_ABS; HBIT; } // 5 BIT ABS |
| 241 | OP(_04c) { H6280_CYCLES(4); EA_ABS; JMP; } // 4 JMP ABS |
| 242 | OP(_06c) { int tmp; H6280_CYCLES(7); EA_IND; JMP; } // 7 JMP IND |
| 243 | OP(_08c) { int tmp; H6280_CYCLES(5); STY; WR_ABS; } // 5 STY ABS |
| 244 | OP(_0ac) { int tmp; H6280_CYCLES(5); RD_ABS; LDY; } // 5 LDY ABS |
| 245 | OP(_0cc) { int tmp; H6280_CYCLES(5); RD_ABS; CPY; } // 5 CPY ABS |
| 246 | OP(_0ec) { int tmp; H6280_CYCLES(5); RD_ABS; CPX; } // 5 CPX ABS |
| 247 | |
| 248 | OP(_01c) { int tmp; H6280_CYCLES(7); RD_ABS; TRB; WB_EA; } // 7 TRB ABS |
| 249 | OP(_03c) { int tmp; H6280_CYCLES(5); RD_ABX; HBIT; } // 5 BIT ABX |
| 250 | OP(_05c) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 251 | OP(_07c) { int tmp; H6280_CYCLES(7); EA_IAX; JMP; } // 7 JMP IAX |
| 252 | OP(_09c) { int tmp; H6280_CYCLES(5); STZ; WR_ABS; } // 5 STZ ABS |
| 253 | OP(_0bc) { int tmp; H6280_CYCLES(5); RD_ABX; LDY; } // 5 LDY ABX |
| 254 | OP(_0dc) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 255 | OP(_0fc) { H6280_CYCLES(2); NOP; } // 2 NOP |
| 256 | |
| 257 | OP(_00d) { int tmp; H6280_CYCLES(5); RD_ABS; ORA; } // 5 ORA ABS |
| 258 | OP(_02d) { int tmp; H6280_CYCLES(5); RD_ABS; AND; } // 5 AND ABS |
| 259 | OP(_04d) { int tmp; H6280_CYCLES(5); RD_ABS; EOR; } // 5 EOR ABS |
| 260 | OP(_06d) { int tmp; H6280_CYCLES(5); RD_ABS; ADC; } // 5 ADC ABS |
| 261 | OP(_08d) { int tmp; H6280_CYCLES(5); STA; WR_ABS; } // 5 STA ABS |
| 262 | OP(_0ad) { int tmp; H6280_CYCLES(5); RD_ABS; LDA; } // 5 LDA ABS |
| 263 | OP(_0cd) { int tmp; H6280_CYCLES(5); RD_ABS; CMP; } // 5 CMP ABS |
| 264 | OP(_0ed) { int tmp; H6280_CYCLES(5); RD_ABS; SBC; } // 5 SBC ABS |
| 265 | |
| 266 | OP(_01d) { int tmp; H6280_CYCLES(5); RD_ABX; ORA; } // 5 ORA ABX |
| 267 | OP(_03d) { int tmp; H6280_CYCLES(5); RD_ABX; AND; } // 5 AND ABX |
| 268 | OP(_05d) { int tmp; H6280_CYCLES(5); RD_ABX; EOR; } // 5 EOR ABX |
| 269 | OP(_07d) { int tmp; H6280_CYCLES(5); RD_ABX; ADC; } // 5 ADC ABX |
| 270 | OP(_09d) { int tmp; H6280_CYCLES(5); STA; WR_ABX; } // 5 STA ABX |
| 271 | OP(_0bd) { int tmp; H6280_CYCLES(5); RD_ABX; LDA; } // 5 LDA ABX |
| 272 | OP(_0dd) { int tmp; H6280_CYCLES(5); RD_ABX; CMP; } // 5 CMP ABX |
| 273 | OP(_0fd) { int tmp; H6280_CYCLES(5); RD_ABX; SBC; } // 5 SBC ABX |
| 274 | |
| 275 | OP(_00e) { int tmp; H6280_CYCLES(7); RD_ABS; ASL; WB_EA; } // 7 ASL ABS |
| 276 | OP(_02e) { int tmp; H6280_CYCLES(7); RD_ABS; ROL; WB_EA; } // 7 ROL ABS |
| 277 | OP(_04e) { int tmp; H6280_CYCLES(7); RD_ABS; LSR; WB_EA; } // 7 LSR ABS |
| 278 | OP(_06e) { int tmp; H6280_CYCLES(7); RD_ABS; ROR; WB_EA; } // 7 ROR ABS |
| 279 | OP(_08e) { int tmp; H6280_CYCLES(5); STX; WR_ABS; } // 5 STX ABS |
| 280 | OP(_0ae) { int tmp; H6280_CYCLES(5); RD_ABS; LDX; } // 5 LDX ABS |
| 281 | OP(_0ce) { int tmp; H6280_CYCLES(7); RD_ABS; DEC; WB_EA; } // 7 DEC ABS |
| 282 | OP(_0ee) { int tmp; H6280_CYCLES(7); RD_ABS; INC; WB_EA; } // 7 INC ABS |
| 283 | |
| 284 | OP(_01e) { int tmp; H6280_CYCLES(7); RD_ABX; ASL; WB_EA; } // 7 ASL ABX |
| 285 | OP(_03e) { int tmp; H6280_CYCLES(7); RD_ABX; ROL; WB_EA; } // 7 ROL ABX |
| 286 | OP(_05e) { int tmp; H6280_CYCLES(7); RD_ABX; LSR; WB_EA; } // 7 LSR ABX |
| 287 | OP(_07e) { int tmp; H6280_CYCLES(7); RD_ABX; ROR; WB_EA; } // 7 ROR ABX |
| 288 | OP(_09e) { int tmp; H6280_CYCLES(5); STZ; WR_ABX; } // 5 STZ ABX |
| 289 | OP(_0be) { int tmp; H6280_CYCLES(5); RD_ABY; LDX; } // 5 LDX ABY |
| 290 | OP(_0de) { int tmp; H6280_CYCLES(7); RD_ABX; DEC; WB_EA; } // 7 DEC ABX |
| 291 | OP(_0fe) { int tmp; H6280_CYCLES(7); RD_ABX; INC; WB_EA; } // 7 INC ABX |
| 292 | |
| 293 | OP(_00f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(0); } // 6/8 BBR0 ZPG,REL |
| 294 | OP(_02f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(2); } // 6/8 BBR2 ZPG,REL |
| 295 | OP(_04f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(4); } // 6/8 BBR4 ZPG,REL |
| 296 | OP(_06f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(6); } // 6/8 BBR6 ZPG,REL |
| 297 | OP(_08f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(0); } // 6/8 BBS0 ZPG,REL |
| 298 | OP(_0af) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(2); } // 6/8 BBS2 ZPG,REL |
| 299 | OP(_0cf) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(4); } // 6/8 BBS4 ZPG,REL |
| 300 | OP(_0ef) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(6); } // 6/8 BBS6 ZPG,REL |
| 301 | |
| 302 | OP(_01f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(1); } // 6/8 BBR1 ZPG,REL |
| 303 | OP(_03f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(3); } // 6/8 BBR3 ZPG,REL |
| 304 | OP(_05f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(5); } // 6/8 BBR5 ZPG,REL |
| 305 | OP(_07f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBR(7); } // 6/8 BBR7 ZPG,REL |
| 306 | OP(_09f) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(1); } // 6/8 BBS1 ZPG,REL |
| 307 | OP(_0bf) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(3); } // 6/8 BBS3 ZPG,REL |
| 308 | OP(_0df) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(5); } // 6/8 BBS5 ZPG,REL |
| 309 | OP(_0ff) { int tmp; H6280_CYCLES(4); RD_ZPG; BBS(7); } // 6/8 BBS7 ZPG,REL |