openMSX
Public Member Functions | Friends | List of all members
openmsx::CPUCore< CPU_POLICY > Class Template Referencefinal

#include <CPUCore.hh>

Inheritance diagram for openmsx::CPUCore< CPU_POLICY >:
Inheritance graph
[legend]
Collaboration diagram for openmsx::CPUCore< CPU_POLICY >:
Collaboration graph
[legend]

Public Member Functions

 CPUCore (MSXMotherBoard &motherboard, const std::string &name, const BooleanSetting &traceSetting, TclCallback &diHaltCallback, EmuTime::param time)
 
void setInterface (MSXCPUInterface *interf)
 
void doReset (EmuTime::param time)
 Reset the CPU. More...
 
void execute (bool fastForward)
 
void exitCPULoopSync ()
 Request to exit the main CPU emulation loop. More...
 
void exitCPULoopAsync ()
 Similar to exitCPULoopSync(), but this method may be called from any thread. More...
 
void warp (EmuTime::param time)
 
EmuTime::param getCurrentTime () const
 
void wait (EmuTime::param time)
 
EmuTime waitCycles (EmuTime::param time, unsigned cycles)
 
void setNextSyncPoint (EmuTime::param time)
 
void invalidateMemCache (unsigned start, unsigned size)
 
bool isM1Cycle (unsigned address) const
 
void disasmCommand (Interpreter &interp, span< const TclObject > tokens, TclObject &result) const
 
void raiseIRQ ()
 Raises the maskable interrupt count. More...
 
void lowerIRQ ()
 Lowers the maskable interrupt count. More...
 
void raiseNMI ()
 Raises the non-maskable interrupt count. More...
 
void lowerNMI ()
 Lowers the non-maskable interrupt count. More...
 
void setFreq (unsigned freq)
 Change the clock freq. More...
 
template<typename Archive >
void serialize (Archive &ar, unsigned version)
 
template<bool PRE_PB, bool POST_PB>
NEVER_INLINE byte RDMEMslow (unsigned address, unsigned cc)
 
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE byte RDMEM_impl2 (unsigned address, unsigned cc)
 
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE byte RDMEM_impl (unsigned address, unsigned cc)
 
template<unsigned PC_OFFSET>
ALWAYS_INLINE byte RDMEM_OPCODE (unsigned cc)
 
template<bool PRE_PB, bool POST_PB>
NEVER_INLINE unsigned RD_WORD_slow (unsigned address, unsigned cc)
 
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE unsigned RD_WORD_impl2 (unsigned address, unsigned cc)
 
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE unsigned RD_WORD_impl (unsigned address, unsigned cc)
 
template<unsigned PC_OFFSET>
ALWAYS_INLINE unsigned RD_WORD_PC (unsigned cc)
 
template<bool PRE_PB, bool POST_PB>
NEVER_INLINE void WRMEMslow (unsigned address, byte value, unsigned cc)
 
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE void WRMEM_impl2 (unsigned address, byte value, unsigned cc)
 
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE void WRMEM_impl (unsigned address, byte value, unsigned cc)
 
template<bool PRE_PB, bool POST_PB>
NEVER_INLINE void WR_WORD_rev_slow (unsigned address, unsigned value, unsigned cc)
 
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE void WR_WORD_rev2 (unsigned address, unsigned value, unsigned cc)
 
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE void WR_WORD_rev (unsigned address, unsigned value, unsigned cc)
 
template<Reg8 R8>
ALWAYS_INLINE byte get8 () const
 
template<Reg16 R16>
ALWAYS_INLINE unsigned get16 () const
 
template<Reg8 R8>
ALWAYS_INLINE void set8 (byte x)
 
template<Reg16 R16>
ALWAYS_INLINE void set16 (unsigned x)
 
- Public Member Functions inherited from openmsx::CPURegs
 CPURegs (bool r800)
 
byte getA () const
 
byte getF () const
 
byte getB () const
 
byte getC () const
 
byte getD () const
 
byte getE () const
 
byte getH () const
 
byte getL () const
 
byte getA2 () const
 
byte getF2 () const
 
byte getB2 () const
 
byte getC2 () const
 
byte getD2 () const
 
byte getE2 () const
 
byte getH2 () const
 
byte getL2 () const
 
byte getIXh () const
 
byte getIXl () const
 
byte getIYh () const
 
byte getIYl () const
 
byte getPCh () const
 
byte getPCl () const
 
byte getSPh () const
 
byte getSPl () const
 
unsigned getAF () const
 
unsigned getBC () const
 
unsigned getDE () const
 
unsigned getHL () const
 
unsigned getAF2 () const
 
unsigned getBC2 () const
 
unsigned getDE2 () const
 
unsigned getHL2 () const
 
unsigned getIX () const
 
unsigned getIY () const
 
unsigned getPC () const
 
unsigned getSP () const
 
byte getIM () const
 
byte getI () const
 
byte getR () const
 
bool getIFF1 () const
 
bool getIFF2 () const
 
byte getHALT () const
 
void setA (byte x)
 
void setF (byte x)
 
void setB (byte x)
 
void setC (byte x)
 
void setD (byte x)
 
void setE (byte x)
 
void setH (byte x)
 
void setL (byte x)
 
void setA2 (byte x)
 
void setF2 (byte x)
 
void setB2 (byte x)
 
void setC2 (byte x)
 
void setD2 (byte x)
 
void setE2 (byte x)
 
void setH2 (byte x)
 
void setL2 (byte x)
 
void setIXh (byte x)
 
void setIXl (byte x)
 
void setIYh (byte x)
 
void setIYl (byte x)
 
void setPCh (byte x)
 
void setPCl (byte x)
 
void setSPh (byte x)
 
void setSPl (byte x)
 
void setAF (unsigned x)
 
void setBC (unsigned x)
 
void setDE (unsigned x)
 
void setHL (unsigned x)
 
void setAF2 (unsigned x)
 
void setBC2 (unsigned x)
 
void setDE2 (unsigned x)
 
void setHL2 (unsigned x)
 
void setIX (unsigned x)
 
void setIY (unsigned x)
 
void setPC (unsigned x)
 
void setSP (unsigned x)
 
void setIM (byte x)
 
void setI (byte x)
 
void setR (byte x)
 
void setIFF1 (bool x)
 
void setIFF2 (bool x)
 
void setHALT (bool x)
 
void setExtHALT (bool x)
 
void incR (byte x)
 
void setCurrentEI ()
 
void setCurrentLDAI ()
 
void setCurrentCall ()
 
void setCurrentPopRet ()
 
bool prevWasEI () const
 
bool prevWasLDAI () const
 
bool prev2WasCall () const
 
bool prevWasPopRet () const
 
void endInstruction ()
 
void clearPrevious ()
 
void checkNoCurrentFlags () const
 
template<typename Archive >
void serialize (Archive &ar, unsigned version)
 

Friends

class MSXCPU
 
class Z80TYPE
 
class R800TYPE
 

Detailed Description

template<class CPU_POLICY>
class openmsx::CPUCore< CPU_POLICY >

Definition at line 49 of file CPUCore.hh.

Constructor & Destructor Documentation

◆ CPUCore()

template<class T >
openmsx::CPUCore< T >::CPUCore ( MSXMotherBoard motherboard,
const std::string &  name,
const BooleanSetting traceSetting,
TclCallback diHaltCallback,
EmuTime::param  time 
)

Definition at line 298 of file CPUCore.cc.

Referenced by openmsx::CPUCore< openmsx::Z80TYPE >::CPUCore().

Member Function Documentation

◆ disasmCommand()

template<class T >
void openmsx::CPUCore< T >::disasmCommand ( Interpreter interp,
span< const TclObject tokens,
TclObject result 
) const

Definition at line 538 of file CPUCore.cc.

◆ doReset()

template<class T >
void openmsx::CPUCore< T >::doReset ( EmuTime::param  time)

Reset the CPU.

Definition at line 359 of file CPUCore.cc.

◆ execute()

template<class T >
void openmsx::CPUCore< T >::execute ( bool  fastForward)

Definition at line 2563 of file CPUCore.cc.

◆ exitCPULoopAsync()

template<class T >
void openmsx::CPUCore< T >::exitCPULoopAsync ( )

Similar to exitCPULoopSync(), but this method may be called from any thread.

Although now the loop will only be exited 'soon'.

Definition at line 423 of file CPUCore.cc.

◆ exitCPULoopSync()

template<class T >
void openmsx::CPUCore< T >::exitCPULoopSync ( )

Request to exit the main CPU emulation loop.

This method may only be called from the main thread. The CPU loop will immediately be exited (current instruction will be finished, but no new instruction will be executed).

Definition at line 428 of file CPUCore.cc.

◆ get16()

template<class CPU_POLICY>
template<Reg16 R16>
ALWAYS_INLINE unsigned openmsx::CPUCore< CPU_POLICY >::get16 ( ) const

Definition at line 2687 of file CPUCore.cc.

◆ get8()

template<class CPU_POLICY>
template<Reg8 R8>
ALWAYS_INLINE byte openmsx::CPUCore< CPU_POLICY >::get8 ( ) const

Definition at line 2669 of file CPUCore.cc.

◆ getCurrentTime()

template<class T >
EmuTime::param openmsx::CPUCore< T >::getCurrentTime ( ) const

Definition at line 344 of file CPUCore.cc.

◆ invalidateMemCache()

template<class T >
void openmsx::CPUCore< T >::invalidateMemCache ( unsigned  start,
unsigned  size 
)

◆ isM1Cycle()

template<class T >
bool openmsx::CPUCore< T >::isM1Cycle ( unsigned  address) const

Definition at line 489 of file CPUCore.cc.

◆ lowerIRQ()

template<class T >
void openmsx::CPUCore< T >::lowerIRQ ( )

Lowers the maskable interrupt count.

Devices should call MSXCPU::lowerIRQ instead, or use the IRQHelper class.

Definition at line 467 of file CPUCore.cc.

◆ lowerNMI()

template<class T >
void openmsx::CPUCore< T >::lowerNMI ( )

Lowers the non-maskable interrupt count.

Devices should call MSXCPU::lowerNMI instead, or use the IRQHelper class.

Definition at line 483 of file CPUCore.cc.

◆ raiseIRQ()

template<class T >
void openmsx::CPUCore< T >::raiseIRQ ( )

Raises the maskable interrupt count.

Devices should call MSXCPU::raiseIRQ instead, or use the IRQHelper class.

Definition at line 458 of file CPUCore.cc.

◆ raiseNMI()

template<class T >
void openmsx::CPUCore< T >::raiseNMI ( )

Raises the non-maskable interrupt count.

Devices should call MSXCPU::raiseNMI instead, or use the IRQHelper class.

Definition at line 473 of file CPUCore.cc.

◆ RD_WORD_impl()

template<class CPU_POLICY>
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE unsigned openmsx::CPUCore< CPU_POLICY >::RD_WORD_impl ( unsigned  address,
unsigned  cc 
)

Definition at line 686 of file CPUCore.cc.

◆ RD_WORD_impl2()

template<class CPU_POLICY>
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE unsigned openmsx::CPUCore< CPU_POLICY >::RD_WORD_impl2 ( unsigned  address,
unsigned  cc 
)

Definition at line 672 of file CPUCore.cc.

◆ RD_WORD_PC()

template<class CPU_POLICY>
template<unsigned PC_OFFSET>
ALWAYS_INLINE unsigned openmsx::CPUCore< CPU_POLICY >::RD_WORD_PC ( unsigned  cc)

Definition at line 692 of file CPUCore.cc.

◆ RD_WORD_slow()

template<class CPU_POLICY>
template<bool PRE_PB, bool POST_PB>
NEVER_INLINE unsigned openmsx::CPUCore< CPU_POLICY >::RD_WORD_slow ( unsigned  address,
unsigned  cc 
)

Definition at line 665 of file CPUCore.cc.

◆ RDMEM_impl()

template<class CPU_POLICY>
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE byte openmsx::CPUCore< CPU_POLICY >::RDMEM_impl ( unsigned  address,
unsigned  cc 
)

Definition at line 639 of file CPUCore.cc.

◆ RDMEM_impl2()

template<class CPU_POLICY>
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE byte openmsx::CPUCore< CPU_POLICY >::RDMEM_impl2 ( unsigned  address,
unsigned  cc 
)

Definition at line 626 of file CPUCore.cc.

◆ RDMEM_OPCODE()

template<class CPU_POLICY>
template<unsigned PC_OFFSET>
ALWAYS_INLINE byte openmsx::CPUCore< CPU_POLICY >::RDMEM_OPCODE ( unsigned  cc)

Definition at line 645 of file CPUCore.cc.

◆ RDMEMslow()

template<class CPU_POLICY>
template<bool PRE_PB, bool POST_PB>
NEVER_INLINE byte openmsx::CPUCore< CPU_POLICY >::RDMEMslow ( unsigned  address,
unsigned  cc 
)

Definition at line 601 of file CPUCore.cc.

◆ serialize()

template<class T >
template<typename Archive >
void openmsx::CPUCore< T >::serialize ( Archive &  ar,
unsigned  version 
)

Definition at line 4415 of file CPUCore.cc.

◆ set16()

template<class CPU_POLICY>
template<Reg16 R16>
ALWAYS_INLINE void openmsx::CPUCore< CPU_POLICY >::set16 ( unsigned  x)

Definition at line 2715 of file CPUCore.cc.

◆ set8()

template<class CPU_POLICY>
template<Reg8 R8>
ALWAYS_INLINE void openmsx::CPUCore< CPU_POLICY >::set8 ( byte  x)

Definition at line 2697 of file CPUCore.cc.

◆ setFreq()

template<class T >
void openmsx::CPUCore< T >::setFreq ( unsigned  freq)

Change the clock freq.

Definition at line 565 of file CPUCore.cc.

◆ setInterface()

template<class CPU_POLICY>
void openmsx::CPUCore< CPU_POLICY >::setInterface ( MSXCPUInterface interf)
inline

Definition at line 56 of file CPUCore.hh.

◆ setNextSyncPoint()

template<class T >
void openmsx::CPUCore< T >::setNextSyncPoint ( EmuTime::param  time)

Definition at line 522 of file CPUCore.cc.

◆ wait()

template<class T >
void openmsx::CPUCore< T >::wait ( EmuTime::param  time)

Definition at line 505 of file CPUCore.cc.

◆ waitCycles()

template<class T >
EmuTime openmsx::CPUCore< T >::waitCycles ( EmuTime::param  time,
unsigned  cycles 
)

Definition at line 512 of file CPUCore.cc.

◆ warp()

template<class T >
void openmsx::CPUCore< T >::warp ( EmuTime::param  time)

Definition at line 338 of file CPUCore.cc.

◆ WR_WORD_rev()

template<class CPU_POLICY>
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE void openmsx::CPUCore< CPU_POLICY >::WR_WORD_rev ( unsigned  address,
unsigned  value,
unsigned  cc 
)

Definition at line 801 of file CPUCore.cc.

◆ WR_WORD_rev2()

template<class CPU_POLICY>
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE void openmsx::CPUCore< CPU_POLICY >::WR_WORD_rev2 ( unsigned  address,
unsigned  value,
unsigned  cc 
)

Definition at line 786 of file CPUCore.cc.

◆ WR_WORD_rev_slow()

template<class CPU_POLICY>
template<bool PRE_PB, bool POST_PB>
NEVER_INLINE void openmsx::CPUCore< CPU_POLICY >::WR_WORD_rev_slow ( unsigned  address,
unsigned  value,
unsigned  cc 
)

Definition at line 779 of file CPUCore.cc.

◆ WRMEM_impl()

template<class CPU_POLICY>
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE void openmsx::CPUCore< CPU_POLICY >::WRMEM_impl ( unsigned  address,
byte  value,
unsigned  cc 
)

Definition at line 743 of file CPUCore.cc.

◆ WRMEM_impl2()

template<class CPU_POLICY>
template<bool PRE_PB, bool POST_PB>
ALWAYS_INLINE void openmsx::CPUCore< CPU_POLICY >::WRMEM_impl2 ( unsigned  address,
byte  value,
unsigned  cc 
)

Definition at line 729 of file CPUCore.cc.

◆ WRMEMslow()

template<class CPU_POLICY>
template<bool PRE_PB, bool POST_PB>
NEVER_INLINE void openmsx::CPUCore< CPU_POLICY >::WRMEMslow ( unsigned  address,
byte  value,
unsigned  cc 
)

Definition at line 704 of file CPUCore.cc.

Friends And Related Function Documentation

◆ MSXCPU

template<class CPU_POLICY>
friend class MSXCPU
friend

Definition at line 476 of file CPUCore.hh.

◆ R800TYPE

template<class CPU_POLICY>
friend class R800TYPE
friend

Definition at line 478 of file CPUCore.hh.

◆ Z80TYPE

template<class CPU_POLICY>
friend class Z80TYPE
friend

Definition at line 477 of file CPUCore.hh.


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