29 #include "sidplayfp/sidendian.h"
30 #include "sidplayfp/component.h"
31 #include "sidplayfp/EventScheduler.h"
48 friend class MOS6510Debug;
50 static const char *credit;
58 static const int MAX = 65536;
61 static const uint8_t SP_PAGE = 0x01;
108 uint_least16_t Register_ProgramCounter;
109 uint_least16_t Cycle_EffectiveAddress;
110 uint_least16_t Cycle_HighByteWrongEffectiveAddress;
111 uint_least16_t Cycle_Pointer;
114 uint8_t Register_StackPointer;
115 uint8_t Register_Accumulator;
121 uint_least16_t instrStartPC;
122 uint_least16_t instrOperand;
149 inline uint8_t getStatusRegister();
150 inline void setStatusRegister(uint8_t sr);
153 inline void IRQLoRequest();
154 inline void IRQHiRequest();
155 inline void interruptsAndNextOpcode();
159 inline void fetchNextOpcode();
178 inline void FetchEffAddrDataByte ();
186 inline void brkPushLowPC();
187 inline void WasteCycle();
190 inline void adc_instr();
193 inline void and_instr();
194 inline void ane_instr();
196 inline void asl_instr();
197 inline void asla_instr();
201 inline void bcc_instr();
202 inline void bcs_instr();
203 inline void beq_instr();
204 inline void bit_instr();
205 inline void bmi_instr();
206 inline void bne_instr();
207 inline void branch_instr(
bool condition);
208 inline void bpl_instr();
209 inline void brk_instr();
210 inline void bvc_instr();
211 inline void bvs_instr();
212 inline void clc_instr();
213 inline void cld_instr();
214 inline void cli_instr();
215 inline void clv_instr();
216 inline void cmp_instr();
217 inline void cpx_instr();
218 inline void cpy_instr();
220 inline void dec_instr();
221 inline void dex_instr();
222 inline void dey_instr();
223 inline void eor_instr();
224 inline void inc_instr();
226 inline void inx_instr();
227 inline void iny_instr();
228 inline void jmp_instr();
231 inline void lda_instr();
232 inline void ldx_instr();
233 inline void ldy_instr();
235 inline void lsr_instr();
236 inline void lsra_instr();
238 inline void ora_instr();
239 inline void pha_instr();
240 inline void pla_instr();
241 inline void plp_instr();
243 inline void rol_instr();
244 inline void rola_instr();
245 inline void ror_instr();
246 inline void rora_instr();
248 inline void rti_instr();
249 inline void rts_instr();
250 inline void sbx_instr();
252 inline void sbc_instr();
253 inline void sec_instr();
254 inline void sed_instr();
255 inline void sei_instr();
256 inline void shs_instr();
257 inline void sta_instr();
258 inline void stx_instr();
259 inline void sty_instr();
260 inline void tax_instr();
261 inline void tay_instr();
262 inline void tsx_instr();
263 inline void txa_instr();
264 inline void txs_instr();
265 inline void tya_instr();
268 void illegal_instr();
283 virtual uint8_t
cpuRead(uint_least16_t addr) =0;
291 virtual void cpuWrite(uint_least16_t addr, uint8_t data) =0;
293 #ifdef PC64_TESTSUITE
294 virtual void loadFile (
const char *file) =0;
297 virtual void reset();
299 const char *credits()
const {
return credit; }
301 void debug(
bool enable, FILE *out);
void PushLowPC()
Definition: mos6510.cpp:609
MOS6510(EventContext *context)
Definition: mos6510.cpp:1512
void setRDY(bool newRDY)
Definition: mos6510.cpp:154
virtual void reset()
Definition: mos6510.cpp:2209
void FetchHighAddrY2()
Definition: mos6510.cpp:474
void FetchLowAddrX()
Definition: mos6510.cpp:391
static const int SR_INTERRUPT
Definition: mos6510.h:65
void say_instr()
Definition: mos6510.cpp:857
void calculateInterruptTriggerCycle()
Definition: mos6510.cpp:308
void axa_instr()
Definition: mos6510.cpp:822
void FetchLowEffAddr()
Definition: mos6510.cpp:541
virtual void cpuWrite(uint_least16_t addr, uint8_t data)=0
bool nmiFlag
Definition: mos6510.h:91
void setFlagsNZ(uint8_t value)
Definition: mos6510.cpp:96
int cycleCount
Definition: mos6510.h:82
void doSBC()
Definition: mos6510.cpp:913
void FetchHighEffAddrY2()
Definition: mos6510.cpp:578
void FetchHighEffAddrY()
Definition: mos6510.cpp:569
void throwAwayRead()
Definition: mos6510.cpp:341
void FetchLowAddrY()
Definition: mos6510.cpp:405
void ins_instr()
Definition: mos6510.cpp:1422
void doADC()
Definition: mos6510.cpp:879
void FetchLowAddr()
Definition: mos6510.cpp:377
void eventWithSteals()
Definition: mos6510.cpp:72
void FetchHighAddrY()
Definition: mos6510.cpp:466
void las_instr()
Definition: mos6510.cpp:1434
bool rdy
Definition: mos6510.h:97
void PushHighPC()
Definition: mos6510.cpp:619
void FetchHighPointer()
Definition: mos6510.cpp:521
void FetchLowPointerX()
Definition: mos6510.cpp:508
struct ProcessorCycle instrTable[0x101<< 3]
Definition: mos6510.h:130
virtual uint8_t cpuRead(uint_least16_t addr)=0
void FetchLowPointer()
Definition: mos6510.cpp:490
void PopSR()
Definition: mos6510.cpp:184
void Initialise()
Definition: mos6510.cpp:2179
void lse_instr()
Definition: mos6510.cpp:1457
void PutEffAddrDataByte()
Definition: mos6510.cpp:601
void aso_instr()
Definition: mos6510.cpp:1397
EventCallback< MOS6510 > m_nosteal
Definition: mos6510.h:137
void anc_instr()
Definition: mos6510.cpp:1354
void eventWithoutSteals()
Definition: mos6510.cpp:64
void triggerNMI()
Definition: mos6510.cpp:223
bool irqAssertedOnPin
Definition: mos6510.h:88
void PushSR()
Definition: mos6510.cpp:174
void PopHighPC()
Definition: mos6510.cpp:639
void triggerIRQ()
Definition: mos6510.cpp:237
void rla_instr()
Definition: mos6510.cpp:1480
void PopLowPC()
Definition: mos6510.cpp:629
void FetchHighAddrX()
Definition: mos6510.cpp:441
void alr_instr()
Definition: mos6510.cpp:1340
void clearIRQ()
Definition: mos6510.cpp:251
int interruptCycle
Definition: mos6510.h:85
void dcm_instr()
Definition: mos6510.cpp:1409
void xas_instr()
Definition: mos6510.cpp:869
void rra_instr()
Definition: mos6510.cpp:1494
void FetchHighEffAddr()
Definition: mos6510.cpp:555
void FetchDataByte()
Definition: mos6510.cpp:355
void FetchHighAddr()
Definition: mos6510.cpp:421
void throwAwayFetch()
Definition: mos6510.cpp:333
EventContext & eventContext
Definition: mos6510.h:79
EventCallback< MOS6510 > m_steal
Definition: mos6510.h:140
void triggerRST()
Definition: mos6510.cpp:209
void axs_instr()
Definition: mos6510.cpp:835
void oal_instr()
Definition: mos6510.cpp:1470
void FetchHighAddrX2()
Definition: mos6510.cpp:449
void arr_instr()
Definition: mos6510.cpp:1365
bool rstFlag
Definition: mos6510.h:94
void lax_instr()
Definition: mos6510.cpp:1447