IORegister Class Reference

yasimavr: IORegister Class Reference
yasimavr
Loading...
Searching...
No Matches

#include <sim_ioreg.h>

Public Types

enum  BitMode { RW , RO , Strobe }
 

Public Member Functions

 IORegister (bitmask_t initial_mask=bitmask_t(), BitMode initial_mode=RW)
 
 ~IORegister ()
 
uint8_t value () const
 Simple inline interface to access the value.
 
void set (uint8_t value)
 Simple inline interface to access the value.
 
void add_bits (bitmask_t mask, BitMode mode)
 
void add_handler (IORegHandler &handler)
 
uint8_t cpu_read (reg_addr_t addr)
 
void cpu_write (reg_addr_t addr, uint8_t value)
 
uint8_t ioctl_read (reg_addr_t addr)
 
void ioctl_write (reg_addr_t addr, uint8_t value)
 
uint8_t dbg_peek (reg_addr_t addr)
 
 IORegister (const IORegister &)=delete
 
IORegisteroperator= (const IORegister &)=delete
 

Detailed Description

Simulation model for a 8-bits I/O register that is a vehicle for data transfer between the CPU and I/O peripherals.

Peripherals can be added as handlers to a register to be notified of accesses (read or write) by the CPU.

Each bit of the register can be marked as used/unused or read-only. this is taken into account on write access for error checks.

Member Enumeration Documentation

◆ BitMode

Enumerator
RW 

Read&Write mode.

RO 

Read only mode.

Strobe 

Strobe mode.

Constructor & Destructor Documentation

◆ IORegister() [1/2]

IORegister::IORegister ( bitmask_t  initial_mask = bitmask_t(),
BitMode  initial_mode = RW 
)
explicit

Build a register.

Parameters
initial_maskinitial mask to set the bit used
initial_modebitmode for the bits set in initial_mask

◆ ~IORegister()

IORegister::~IORegister ( )

◆ IORegister() [2/2]

IORegister::IORegister ( const IORegister )
delete

Member Function Documentation

◆ add_bits()

void IORegister::add_bits ( bitmask_t  mask,
BitMode  mode 
)

Add bits to be used in to this register.

Parameters
maskbitmask with the bits to used
modebitmode for the bits set in mask
Note
bits already used are not changed even if they are set in mask

◆ add_handler()

void IORegister::add_handler ( IORegHandler handler)

Add a handler to this register.

Parameters
handlerhandler to add

◆ cpu_read()

uint8_t IORegister::cpu_read ( reg_addr_t  addr)

CPU read access to the register.

◆ cpu_write()

void IORegister::cpu_write ( reg_addr_t  addr,
uint8_t  value 
)

CPU write access to the register.

◆ dbg_peek()

uint8_t IORegister::dbg_peek ( reg_addr_t  addr)

I/O peripheral interface for peek operation (for debug purpose) on this register

◆ ioctl_read()

uint8_t IORegister::ioctl_read ( reg_addr_t  addr)

I/O peripheral interface for read/write operation on this register

◆ ioctl_write()

void IORegister::ioctl_write ( reg_addr_t  addr,
uint8_t  value 
)

I/O peripheral interface for read/write operation on this register

◆ operator=()

IORegister & IORegister::operator= ( const IORegister )
delete

◆ set()

void IORegister::set ( uint8_t  value)
inline

Simple inline interface to access the value.

◆ value()

uint8_t IORegister::value ( ) const
inline

Simple inline interface to access the value.


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