29 #include "sidplayfp/EventScheduler.h"
30 #include "sidplayfp/component.h"
56 Timer(
"CIA Timer A", context, parent) {}
75 Timer(
"CIA Timer B", context, parent) {}
108 static const char *credit;
205 void trigger(uint8_t interruptMask);
225 virtual void portA() {}
226 virtual void portB() {}
234 uint8_t
read(uint_least8_t addr);
244 void write(uint_least8_t addr, uint8_t data);
247 void setTodReg(uint_least8_t addr, uint8_t data);
250 static uint8_t byte2bcd(uint8_t byte) {
return (((byte / 10) << 4) + (byte % 10)) & 0xff; }
251 static uint8_t bcd2byte(uint8_t bcd) {
return ((10*((bcd & 0xf0) >> 4)) + (bcd & 0xf)) & 0xff; }
257 virtual void reset();
264 const char *
credits()
const {
return credit; }
void bTick()
Definition: mos6526.cpp:377
uint8_t regs[0x10]
These are all CIA registers.
Definition: mos6526.h:112
uint8_t & ddrb
Ports.
Definition: mos6526.h:116
bool m_todstopped
TOD.
Definition: mos6526.h:144
Definition: mos6526.h:102
uint8_t idr
Interrupt data register.
Definition: mos6526.h:136
TimerB(EventContext *context, MOS6526 *parent)
Definition: mos6526.h:74
TimerA timerA
Timers A and B.
Definition: mos6526.h:121
int sdr_count
Serial Data Registers.
Definition: mos6526.h:129
uint8_t sdr_out
Serial Data Registers.
Definition: mos6526.h:127
bool started() const
Definition: mos6526.h:93
void cascade()
Definition: mos6526.h:80
uint8_t m_todlatch[4]
TOD.
Definition: mos6526.h:145
uint8_t read(uint_least8_t addr)
Definition: mos6526.cpp:167
void trigger()
Definition: mos6526.cpp:356
EventCallback< MOS6526 > bTickEvent
Events.
Definition: mos6526.h:154
void clear()
Definition: mos6526.cpp:124
MOS6526 *const parent
Pointer to the MOS6526 which this Timer belongs to.
Definition: timer.h:88
uint8_t & ddra
Ports.
Definition: mos6526.h:116
event_clock_t m_todPeriod
TOD.
Definition: mos6526.h:146
void underflowA()
Definition: mos6526.cpp:382
EventCallback< MOS6526 > triggerEvent
Events.
Definition: mos6526.h:156
Definition: component.h:28
bool triggerScheduled
Have we already scheduled CIA->CPU interrupt transition?
Definition: mos6526.h:150
void serialPort()
Definition: mos6526.cpp:103
bool m_todlatched
TOD.
Definition: mos6526.h:143
int_least32_t state
CRA/CRB control register / state.
Definition: timer.h:91
void underflowB()
Definition: mos6526.cpp:394
uint8_t & prb
Ports.
Definition: mos6526.h:116
bool sdr_buffered
Serial Data Registers.
Definition: mos6526.h:128
void write(uint_least8_t addr, uint8_t data)
Definition: mos6526.cpp:265
uint8_t icr
Interrupt control register.
Definition: mos6526.h:133
MOS6526(EventContext *context)
Definition: mos6526.cpp:86
void tod()
Definition: mos6526.cpp:399
virtual void reset()
Definition: mos6526.cpp:137
virtual void interrupt(bool state)=0
void syncWithCpu()
Definition: timer.cpp:34
event_clock_t m_todCycles
TOD.
Definition: mos6526.h:146
uint8_t m_todalarm[4]
TOD.
Definition: mos6526.h:145
void wakeUpAfterSyncWithCpu()
Definition: timer.cpp:57
TimerA(EventContext *context, MOS6526 *parent)
Definition: mos6526.h:55
EventContext & event_context
Event context.
Definition: mos6526.h:139
uint8_t & pra
Ports.
Definition: mos6526.h:116
void setDayOfTimeRate(unsigned int clock)
Definition: mos6526.cpp:132
EventCallback< MOS6526 > todEvent
Events.
Definition: mos6526.h:155
uint8_t m_todclock[4]
TOD.
Definition: mos6526.h:145
TimerB timerB
Timers A and B.
Definition: mos6526.h:122
const char * credits() const
Definition: mos6526.h:264