libsidplayfp
1.0.3
|
#include <mos6526.h>
Public Member Functions | |
virtual void | reset () |
const char * | credits () const |
void | setDayOfTimeRate (unsigned int clock) |
Protected Member Functions | |
MOS6526 (EventContext *context) | |
void | bTick () |
void | tod () |
void | trigger () |
void | underflowA () |
void | underflowB () |
void | trigger (uint8_t interruptMask) |
void | clear () |
void | serialPort () |
virtual void | interrupt (bool state)=0 |
virtual void | portA () |
virtual void | portB () |
uint8_t | read (uint_least8_t addr) |
void | write (uint_least8_t addr, uint8_t data) |
Protected Attributes | |
uint8_t | regs [0x10] |
uint8_t & | pra |
uint8_t & | prb |
uint8_t & | ddra |
uint8_t & | ddrb |
TimerA | timerA |
TimerB | timerB |
uint8_t | sdr_out |
bool | sdr_buffered |
int | sdr_count |
uint8_t | icr |
uint8_t | idr |
EventContext & | event_context |
bool | m_todlatched |
bool | m_todstopped |
uint8_t | m_todclock [4] |
uint8_t | m_todalarm [4] |
uint8_t | m_todlatch [4] |
event_clock_t | m_todCycles |
event_clock_t | m_todPeriod |
bool | triggerScheduled |
EventCallback< MOS6526 > | bTickEvent |
EventCallback< MOS6526 > | todEvent |
EventCallback< MOS6526 > | triggerEvent |
Friends | |
class | TimerA |
class | TimerB |
This class is heavily based on the ciacore/ciatimer source code from VICE. The CIA state machine is lifted as-is. Big thanks to VICE project!
MOS6526::MOS6526 | ( | EventContext * | context | ) | [protected] |
Create a new CIA.
ctx | the event context |
void MOS6526::bTick | ( | ) | [protected] |
This event exists solely to break the ambiguity of what scheduling on top of PHI1 causes, because there is no ordering between events on same phase. Thus it is scheduled in PHI2 to ensure the b.event() is run once before the value changes.
void MOS6526::clear | ( | ) | [protected] |
Clear interrupt state.
const char* MOS6526::credits | ( | ) | const [inline, virtual] |
virtual void MOS6526::interrupt | ( | bool | state | ) | [protected, pure virtual] |
uint8_t MOS6526::read | ( | uint_least8_t | addr | ) | [protected, virtual] |
void MOS6526::reset | ( | ) | [virtual] |
void MOS6526::serialPort | ( | ) | [protected] |
Handle the serial port.
void MOS6526::setDayOfTimeRate | ( | unsigned int | clock | ) |
Set day-of-time event occurence of rate.
clock |
void MOS6526::tod | ( | ) | [protected] |
TOD event.
void MOS6526::trigger | ( | ) | [protected] |
Signal interrupt to CPU.
void MOS6526::trigger | ( | uint8_t | interruptMask | ) | [protected] |
Trigger an interrupt.
interruptMask | Interrupt flag number |
void MOS6526::underflowA | ( | ) | [protected] |
Timer A underflow
void MOS6526::underflowB | ( | ) | [protected] |
Timer B underflow.
void MOS6526::write | ( | uint_least8_t | addr, |
uint8_t | data | ||
) | [protected, virtual] |
Write CIA register.
addr | register address to write (lowest 4 bits) |
data | value to write |
Implements component.
EventContext& MOS6526::event_context [protected] |
Event context.
uint8_t MOS6526::icr [protected] |
Interrupt control register
uint8_t MOS6526::idr [protected] |
Interrupt data register
uint8_t MOS6526::regs[0x10] [protected] |
These are all CIA registers.
TimerA MOS6526::timerA [protected] |
Timers A and B.
bool MOS6526::triggerScheduled [protected] |
Have we already scheduled CIA->CPU interrupt transition?