libsidplayfp  1.0.3
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
MOS656X Class Reference
Inheritance diagram for MOS656X:
component Event c64vic

List of all members.

Public Types

enum  model_t { MOS6567R56A = 0, MOS6567R8, MOS6569, MOS6572 }

Public Member Functions

void chip (model_t model)
void lightpen ()
void reset ()
const char * credits () const
uint_least16_t getCyclesPerLine () const
uint_least16_t getRasterLines () const

Protected Member Functions

 MOS656X (EventContext *context)
void event ()
void badLineStateChange ()
void activateIRQFlag (int flag)
bool readDEN () const
bool evaluateIsBadLine () const
virtual void interrupt (bool state)=0
virtual void setBA (bool state)=0
uint8_t read (uint_least8_t addr)
void write (uint_least8_t addr, uint8_t data)

Protected Attributes

event_clock_t m_rasterClk
EventContextevent_context
uint_least16_t cyclesPerLine
uint_least16_t maxRasters
uint_least16_t raster_irq
uint_least16_t lineCycle
uint_least16_t rasterY
uint_least16_t yscroll
bool areBadLinesEnabled
bool isBadLine
bool vblanking
bool lp_triggered
uint8_t irqFlags
uint8_t irqMask
uint8_t lpx
uint8_t lpy
uint8_t regs [0x40]
EventCallback< MOS656XbadLineStateChangeEvent
uint8_t & sprite_enable
uint8_t & sprite_y_expansion
uint8_t sprite_dma
uint8_t sprite_expand_y
uint8_t sprite_mc_base [8]

Static Protected Attributes

static const int FIRST_DMA_LINE = 0x30
static const int LAST_DMA_LINE = 0xf7

Member Function Documentation

void MOS656X::activateIRQFlag ( int  flag) [inline, protected]

Set an IRQ flag and trigger an IRQ if the corresponding IRQ mask is set. The IRQ only gets activated, i.e. flag 0x80 gets set, if it was not active before.

void MOS656X::badLineStateChange ( ) [inline, protected]

AEC state was updated.

void MOS656X::event ( ) [protected, virtual]

Event code to be executed. Events are allowed to safely reschedule themselves with the EventScheduler during invocations.

Implements Event.

uint8_t MOS656X::read ( uint_least8_t  addr) [protected, virtual]

Read VIC register.

Parameters:
addrRegister to read.

Implements component.

bool MOS656X::readDEN ( ) const [inline, protected]

Read the DEN flag which tells whether the display is enabled

Returns:
true if DEN is set, otherwise false
void MOS656X::write ( uint_least8_t  addr,
uint8_t  data 
) [protected, virtual]

Write to VIC register.

Parameters:
addrRegister to write to.
dataData byte to write.

Implements component.


Member Data Documentation

bool MOS656X::areBadLinesEnabled [protected]

are bad lines enabled for this frame?

uint_least16_t MOS656X::cyclesPerLine [protected]

Number of cycles per line.

CPU's event context.

const int MOS656X::FIRST_DMA_LINE = 0x30 [static, protected]

First line when we check for bad lines

uint8_t MOS656X::irqFlags [protected]

internal IRQ flags

uint8_t MOS656X::irqMask [protected]

masks for the IRQ flags

bool MOS656X::isBadLine [protected]

is the current line a bad line

const int MOS656X::LAST_DMA_LINE = 0xf7 [static, protected]

Last line when we check for bad lines

uint_least16_t MOS656X::lineCycle [protected]

Current visible line

bool MOS656X::lp_triggered [protected]

Has light pen IRQ been triggered in this frame already?

uint8_t MOS656X::lpx [protected]

Light pen coordinates

uint_least16_t MOS656X::rasterY [protected]

current raster line

uint8_t MOS656X::regs[0x40] [protected]

memory for chip registers

uint8_t MOS656X::sprite_dma [protected]

the 8 sprites data

uint8_t& MOS656X::sprite_enable [protected]

the 8 sprites data

uint8_t MOS656X::sprite_expand_y [protected]

the 8 sprites data

uint8_t MOS656X::sprite_mc_base[8] [protected]

the 8 sprites data

uint8_t & MOS656X::sprite_y_expansion [protected]

the 8 sprites data

bool MOS656X::vblanking [protected]

Set when new frame starts.

uint_least16_t MOS656X::yscroll [protected]

vertical scrolling value


The documentation for this class was generated from the following files: