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)
 
auto getCacheLines ()
 
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 282 of file CPUCore.cc.

References openmsx::CPUCore< CPU_POLICY >::doReset().

Member Function Documentation

◆ disasmCommand()

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

◆ doReset()

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

Reset the CPU.

Definition at line 333 of file CPUCore.cc.

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

◆ execute()

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

Definition at line 2538 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 396 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 401 of file CPUCore.cc.

References openmsx::Thread::isMainThread().

◆ get16()

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

Definition at line 2662 of file CPUCore.cc.

◆ get8()

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

Definition at line 2644 of file CPUCore.cc.

◆ getCacheLines()

template<class CPU_POLICY >
auto openmsx::CPUCore< CPU_POLICY >::getCacheLines ( )
inline

Definition at line 82 of file CPUCore.hh.

◆ getCurrentTime()

template<class T >
EmuTime::param openmsx::CPUCore< T >::getCurrentTime

Definition at line 328 of file CPUCore.cc.

◆ isM1Cycle()

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

Definition at line 462 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 440 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 456 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 431 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 446 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 660 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 646 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 666 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 639 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 613 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 600 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 619 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 574 of file CPUCore.cc.

◆ serialize()

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

Definition at line 4390 of file CPUCore.cc.

References openmsx::serialize().

◆ set16()

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

Definition at line 2690 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 2672 of file CPUCore.cc.

◆ setFreq()

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

Change the clock freq.

Definition at line 538 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 495 of file CPUCore.cc.

◆ wait()

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

Definition at line 478 of file CPUCore.cc.

◆ waitCycles()

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

Definition at line 485 of file CPUCore.cc.

◆ warp()

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

Definition at line 322 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 776 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 761 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 754 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 718 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 704 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 678 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: