yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze::emu::Spc700 Class Reference

The Spc700 class represents the SPC700 processor. More...

#include <spc700.h>

Collaboration diagram for yaze::emu::Spc700:

Classes

struct  Flags
 

Public Member Functions

 Spc700 (ApuCallbacks &callbacks)
 
uint8_t FlagsToByte (Flags flags)
 
Flags ByteToFlags (uint8_t byte)
 
void Reset (bool hard=false)
 
void RunOpcode ()
 
int Step ()
 
int GetLastOpcodeCycles () const
 
void ExecuteInstructions (uint8_t opcode)
 
void LogInstruction (uint16_t initial_pc, uint8_t opcode)
 
uint8_t read (uint16_t address)
 
uint16_t read_word (uint16_t address)
 
uint8_t ReadOpcode ()
 
uint16_t ReadOpcodeWord ()
 
void DoBranch (uint8_t value, bool check)
 
void write (uint16_t address, uint8_t value)
 
void push_byte (uint8_t value)
 
void push_word (uint16_t value)
 
uint8_t pull_byte ()
 
uint16_t pull_word ()
 
uint16_t imm ()
 
uint8_t dp ()
 
uint16_t dpx ()
 
uint8_t get_dp_addr ()
 
uint8_t abs_bit (uint16_t *adr)
 
uint16_t dp_dp (uint8_t *src)
 
uint16_t ind ()
 
uint16_t ind_ind (uint8_t *srcVal)
 
uint16_t dp_word (uint16_t *low)
 
uint16_t ind_p ()
 
uint16_t abs_x ()
 
uint16_t abs_y ()
 
uint16_t idx ()
 
uint16_t idy ()
 
uint16_t dp_y ()
 
uint16_t dp_imm (uint8_t *srcVal)
 
uint16_t abs ()
 
int8_t rel ()
 
uint8_t dp_plus_x ()
 
uint8_t dp_plus_y ()
 
uint16_t dp_plus_x_indirect ()
 
uint16_t dp_indirect_plus_y ()
 
uint8_t i ()
 
uint8_t i_postinc ()
 
uint16_t addr_plus_i ()
 
uint16_t addr_plus_i_indexed ()
 
void MOV (uint16_t adr)
 
void MOV_ADDR (uint16_t address, uint8_t operand)
 
void MOVY (uint16_t adr)
 
void MOVX (uint16_t adr)
 
void MOVS (uint16_t adr)
 
void MOVSX (uint16_t adr)
 
void MOVSY (uint16_t adr)
 
void ADC (uint16_t adr)
 
void ADCM (uint16_t &dest, uint8_t operand)
 
void SBC (uint16_t adr)
 
void SBCM (uint16_t &dest, uint8_t operand)
 
void CMP (uint16_t adr)
 
void CMPX (uint16_t adr)
 
void CMPM (uint16_t dst, uint8_t value)
 
void CMPY (uint16_t adr)
 
void AND (uint16_t adr)
 
void ANDM (uint16_t dest, uint8_t operand)
 
void OR (uint16_t adr)
 
void ORM (uint16_t dest, uint8_t operand)
 
void EOR (uint16_t adr)
 
void EORM (uint16_t dest, uint8_t operand)
 
void ASL (uint16_t operand)
 
void LSR (uint16_t adr)
 
void ROL (uint16_t operand)
 
void ROR (uint16_t adr)
 
void XCN (uint8_t operand, bool isImmediate=false)
 
void INC (uint16_t adr)
 
void DEC (uint16_t operand)
 
void MOVW (uint16_t &dest, uint16_t operand)
 
void INCW (uint16_t &operand)
 
void DECW (uint16_t &operand)
 
void ADDW (uint16_t &dest, uint16_t operand)
 
void SUBW (uint16_t &dest, uint16_t operand)
 
void CMPW (uint16_t operand)
 
void MUL (uint8_t operand)
 
void DIV (uint8_t operand)
 
void BRA (int8_t offset)
 
void BEQ (int8_t offset)
 
void BNE (int8_t offset)
 
void BCS (int8_t offset)
 
void BCC (int8_t offset)
 
void BVS (int8_t offset)
 
void BVC (int8_t offset)
 
void BMI (int8_t offset)
 
void BPL (int8_t offset)
 
void BBS (uint8_t bit, uint8_t operand)
 
void BBC (uint8_t bit, uint8_t operand)
 
void JMP (uint16_t address)
 
void CALL (uint16_t address)
 
void PCALL (uint8_t offset)
 
void TCALL (uint8_t offset)
 
void BRK ()
 
void RET ()
 
void RETI ()
 
void PUSH (uint8_t operand)
 
void POP (uint8_t &operand)
 
void SET1 (uint8_t bit, uint8_t &operand)
 
void CLR1 (uint8_t bit, uint8_t &operand)
 
void TSET1 (uint8_t bit, uint8_t &operand)
 
void TCLR1 (uint8_t bit, uint8_t &operand)
 
void AND1 (uint8_t bit, uint8_t &operand)
 
void OR1 (uint8_t bit, uint8_t &operand)
 
void EOR1 (uint8_t bit, uint8_t &operand)
 
void NOT1 (uint8_t bit, uint8_t &operand)
 
void MOV1 (uint8_t bit, uint8_t &operand)
 
void CLRC ()
 
void SETC ()
 
void NOTC ()
 
void CLRV ()
 
void CLRP ()
 
void SETP ()
 
void EI ()
 
void DI ()
 
void NOP ()
 
void SLEEP ()
 
void STOP ()
 

Public Attributes

uint8_t A = 0x00
 
uint8_t X = 0x00
 
uint8_t Y = 0x00
 
uint16_t YA = 0x00
 
uint16_t PC = 0xFFC0
 
uint8_t SP = 0x00
 
Flags PSW
 

Private Attributes

ApuCallbacks callbacks_
 
std::vector< std::string > log_
 
bool stopped_
 
bool reset_wanted_
 
uint8_t opcode
 
uint32_t step = 0
 
uint32_t bstep
 
uint16_t adr
 
uint16_t adr1
 
uint8_t dat
 
uint16_t dat16
 
uint8_t param
 
int extra_cycles_ = 0
 
int last_opcode_cycles_ = 0
 
const uint8_t ipl_rom_ [64]
 

Detailed Description

The Spc700 class represents the SPC700 processor.

The Spc700 class provides the functionality to execute instructions, read and write memory, and handle various addressing modes. It also contains registers and flags specific to the SPC700.

Note
This class assumes the existence of an AudioRam object for memory access.

Definition at line 69 of file spc700.h.

Constructor & Destructor Documentation

◆ Spc700()

yaze::emu::Spc700::Spc700 ( ApuCallbacks callbacks)
inlineexplicit

Definition at line 99 of file spc700.h.

Member Function Documentation

◆ FlagsToByte()

◆ ByteToFlags()

◆ Reset()

void yaze::emu::Spc700::Reset ( bool  hard = false)

Definition at line 16 of file spc700.cc.

References A, ByteToFlags(), PSW, reset_wanted_, SP, step, stopped_, X, and Y.

Referenced by yaze::emu::Apu::Reset(), and yaze::test::EmulatorTestSuite::RunSpc700CycleAccuracyTest().

Here is the call graph for this function:

◆ RunOpcode()

void yaze::emu::Spc700::RunOpcode ( )

◆ Step()

int yaze::emu::Spc700::Step ( )

Definition at line 31 of file spc700.cc.

References callbacks_, ExecuteInstructions(), extra_cycles_, yaze::emu::Spc700::Flags::I, yaze::emu::ApuCallbacks::idle, opcode, PC, PSW, read(), ReadOpcode(), reset_wanted_, SP, and stopped_.

Referenced by yaze::emu::Apu::RunCycles().

Here is the call graph for this function:

◆ GetLastOpcodeCycles()

int yaze::emu::Spc700::GetLastOpcodeCycles ( ) const
inline

Definition at line 148 of file spc700.h.

References last_opcode_cycles_.

Referenced by yaze::test::EmulatorTestSuite::RunSpc700CycleAccuracyTest().

◆ ExecuteInstructions()

◆ LogInstruction()

void yaze::emu::Spc700::LogInstruction ( uint16_t  initial_pc,
uint8_t  opcode 
)

Definition at line 1432 of file spc700.cc.

References A, yaze::util::LogManager::instance(), yaze::util::LogManager::log(), opcode, spc_opcode_map, X, Y, and yaze::util::YAZE_DEBUG.

Here is the call graph for this function:

◆ read()

◆ read_word()

uint16_t yaze::emu::Spc700::read_word ( uint16_t  address)
inline

◆ ReadOpcode()

uint8_t yaze::emu::Spc700::ReadOpcode ( )
inline

◆ ReadOpcodeWord()

uint16_t yaze::emu::Spc700::ReadOpcodeWord ( )
inline

Definition at line 168 of file spc700.h.

References ReadOpcode().

Referenced by abs(), abs_bit(), abs_x(), abs_y(), and ExecuteInstructions().

Here is the call graph for this function:

◆ DoBranch()

void yaze::emu::Spc700::DoBranch ( uint8_t  value,
bool  check 
)
inline

Definition at line 174 of file spc700.h.

References callbacks_, extra_cycles_, yaze::emu::ApuCallbacks::idle, and PC.

Referenced by ExecuteInstructions().

◆ write()

void yaze::emu::Spc700::write ( uint16_t  address,
uint8_t  value 
)
inline

◆ push_byte()

void yaze::emu::Spc700::push_byte ( uint8_t  value)
inline

Definition at line 190 of file spc700.h.

References callbacks_, SP, and yaze::emu::ApuCallbacks::write.

Referenced by BRK(), CALL(), ExecuteInstructions(), PCALL(), PUSH(), push_word(), and TCALL().

◆ push_word()

void yaze::emu::Spc700::push_word ( uint16_t  value)
inline

Definition at line 195 of file spc700.h.

References push_byte().

Referenced by BRK(), and ExecuteInstructions().

Here is the call graph for this function:

◆ pull_byte()

uint8_t yaze::emu::Spc700::pull_byte ( )
inline

Definition at line 200 of file spc700.h.

References read(), and SP.

Referenced by ExecuteInstructions(), POP(), pull_word(), and RETI().

Here is the call graph for this function:

◆ pull_word()

uint16_t yaze::emu::Spc700::pull_word ( )
inline

Definition at line 205 of file spc700.h.

References pull_byte().

Referenced by ExecuteInstructions(), RET(), and RETI().

Here is the call graph for this function:

◆ imm()

uint16_t yaze::emu::Spc700::imm ( )

Definition at line 79 of file addressing.cc.

References PC.

Referenced by ExecuteInstructions(), and XCN().

◆ dp()

uint8_t yaze::emu::Spc700::dp ( )

Definition at line 82 of file addressing.cc.

References yaze::emu::Spc700::Flags::P, PSW, and ReadOpcode().

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ dpx()

uint16_t yaze::emu::Spc700::dpx ( )

Definition at line 19 of file addressing.cc.

References callbacks_, yaze::emu::ApuCallbacks::idle, yaze::emu::Spc700::Flags::P, PSW, ReadOpcode(), and X.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ get_dp_addr()

uint8_t yaze::emu::Spc700::get_dp_addr ( )

◆ abs_bit()

uint8_t yaze::emu::Spc700::abs_bit ( uint16_t *  adr)

Definition at line 61 of file addressing.cc.

References adr, and ReadOpcodeWord().

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ dp_dp()

uint16_t yaze::emu::Spc700::dp_dp ( uint8_t *  src)

Definition at line 114 of file addressing.cc.

References yaze::emu::Spc700::Flags::P, PSW, read(), and ReadOpcode().

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ ind()

uint16_t yaze::emu::Spc700::ind ( )

Definition at line 8 of file addressing.cc.

References yaze::emu::Spc700::Flags::P, PC, PSW, read(), and X.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ ind_ind()

uint16_t yaze::emu::Spc700::ind_ind ( uint8_t *  srcVal)

Definition at line 55 of file addressing.cc.

References yaze::emu::Spc700::Flags::P, PC, PSW, read(), X, and Y.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ dp_word()

uint16_t yaze::emu::Spc700::dp_word ( uint16_t *  low)

Definition at line 67 of file addressing.cc.

References adr, yaze::emu::Spc700::Flags::P, PSW, and ReadOpcode().

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ ind_p()

uint16_t yaze::emu::Spc700::ind_p ( )

Definition at line 73 of file addressing.cc.

References yaze::emu::Spc700::Flags::P, PC, PSW, read(), and X.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ abs_x()

uint16_t yaze::emu::Spc700::abs_x ( )

Definition at line 31 of file addressing.cc.

References callbacks_, yaze::emu::ApuCallbacks::idle, ReadOpcodeWord(), and X.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ abs_y()

uint16_t yaze::emu::Spc700::abs_y ( )

Definition at line 37 of file addressing.cc.

References callbacks_, yaze::emu::ApuCallbacks::idle, ReadOpcodeWord(), and Y.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ idx()

uint16_t yaze::emu::Spc700::idx ( )

Definition at line 13 of file addressing.cc.

References callbacks_, yaze::emu::ApuCallbacks::idle, yaze::emu::Spc700::Flags::P, PSW, read_word(), ReadOpcode(), and X.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ idy()

uint16_t yaze::emu::Spc700::idy ( )

Definition at line 43 of file addressing.cc.

References adr, callbacks_, yaze::emu::ApuCallbacks::idle, yaze::emu::Spc700::Flags::P, PSW, read_word(), ReadOpcode(), and Y.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ dp_y()

uint16_t yaze::emu::Spc700::dp_y ( )

Definition at line 25 of file addressing.cc.

References callbacks_, yaze::emu::ApuCallbacks::idle, yaze::emu::Spc700::Flags::P, PSW, ReadOpcode(), and Y.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ dp_imm()

uint16_t yaze::emu::Spc700::dp_imm ( uint8_t *  srcVal)

Definition at line 50 of file addressing.cc.

References yaze::emu::Spc700::Flags::P, PSW, and ReadOpcode().

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ abs()

uint16_t yaze::emu::Spc700::abs ( )

Definition at line 119 of file addressing.cc.

References ReadOpcodeWord().

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ rel()

int8_t yaze::emu::Spc700::rel ( )

Definition at line 121 of file addressing.cc.

References PC, and read().

Referenced by BBC(), and BBS().

Here is the call graph for this function:

◆ dp_plus_x()

uint8_t yaze::emu::Spc700::dp_plus_x ( )

Definition at line 87 of file addressing.cc.

References yaze::emu::Spc700::Flags::P, PC, PSW, read(), and X.

Here is the call graph for this function:

◆ dp_plus_y()

uint8_t yaze::emu::Spc700::dp_plus_y ( )

Definition at line 94 of file addressing.cc.

References yaze::emu::Spc700::Flags::P, PC, PSW, read(), and Y.

Here is the call graph for this function:

◆ dp_plus_x_indirect()

uint16_t yaze::emu::Spc700::dp_plus_x_indirect ( )

Definition at line 101 of file addressing.cc.

References PC, read_word(), and X.

Here is the call graph for this function:

◆ dp_indirect_plus_y()

uint16_t yaze::emu::Spc700::dp_indirect_plus_y ( )

Definition at line 108 of file addressing.cc.

References PC, read_word(), and Y.

Here is the call graph for this function:

◆ i()

uint8_t yaze::emu::Spc700::i ( )

Definition at line 126 of file addressing.cc.

References yaze::emu::Spc700::Flags::P, PSW, read(), and X.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ i_postinc()

uint8_t yaze::emu::Spc700::i_postinc ( )

Definition at line 128 of file addressing.cc.

References yaze::emu::Spc700::Flags::P, PSW, read(), and X.

Here is the call graph for this function:

◆ addr_plus_i()

uint16_t yaze::emu::Spc700::addr_plus_i ( )

Definition at line 134 of file addressing.cc.

References PC, read(), and X.

Here is the call graph for this function:

◆ addr_plus_i_indexed()

uint16_t yaze::emu::Spc700::addr_plus_i_indexed ( )

Definition at line 140 of file addressing.cc.

References PC, read(), and X.

Here is the call graph for this function:

◆ MOV()

void yaze::emu::Spc700::MOV ( uint16_t  adr)

Definition at line 19 of file instructions.cc.

References A, adr, yaze::emu::Spc700::Flags::N, PSW, read(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ MOV_ADDR()

void yaze::emu::Spc700::MOV_ADDR ( uint16_t  address,
uint8_t  operand 
)

Definition at line 63 of file instructions.cc.

References read(), and write().

Here is the call graph for this function:

◆ MOVY()

void yaze::emu::Spc700::MOVY ( uint16_t  adr)

Definition at line 33 of file instructions.cc.

References adr, yaze::emu::Spc700::Flags::N, PSW, read(), Y, and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ MOVX()

void yaze::emu::Spc700::MOVX ( uint16_t  adr)

Definition at line 26 of file instructions.cc.

References adr, yaze::emu::Spc700::Flags::N, PSW, read(), X, and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ MOVS()

void yaze::emu::Spc700::MOVS ( uint16_t  adr)

Definition at line 45 of file instructions.cc.

References A, read(), and write().

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ MOVSX()

void yaze::emu::Spc700::MOVSX ( uint16_t  adr)

Definition at line 51 of file instructions.cc.

References read(), write(), and X.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ MOVSY()

void yaze::emu::Spc700::MOVSY ( uint16_t  adr)

Definition at line 57 of file instructions.cc.

References read(), write(), and Y.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ ADC()

void yaze::emu::Spc700::ADC ( uint16_t  adr)

◆ ADCM()

void yaze::emu::Spc700::ADCM ( uint16_t &  dest,
uint8_t  operand 
)

◆ SBC()

void yaze::emu::Spc700::SBC ( uint16_t  adr)

◆ SBCM()

void yaze::emu::Spc700::SBCM ( uint16_t &  dest,
uint8_t  operand 
)

◆ CMP()

void yaze::emu::Spc700::CMP ( uint16_t  adr)

Definition at line 129 of file instructions.cc.

References A, adr, yaze::emu::Spc700::Flags::C, yaze::emu::Spc700::Flags::N, PSW, read(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ CMPX()

void yaze::emu::Spc700::CMPX ( uint16_t  adr)

Definition at line 138 of file instructions.cc.

References adr, yaze::emu::Spc700::Flags::C, yaze::emu::Spc700::Flags::N, PSW, read(), X, and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ CMPM()

void yaze::emu::Spc700::CMPM ( uint16_t  dst,
uint8_t  value 
)

Definition at line 156 of file instructions.cc.

References yaze::emu::Spc700::Flags::C, callbacks_, yaze::emu::ApuCallbacks::idle, yaze::emu::Spc700::Flags::N, PSW, read(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ CMPY()

void yaze::emu::Spc700::CMPY ( uint16_t  adr)

Definition at line 147 of file instructions.cc.

References adr, yaze::emu::Spc700::Flags::C, yaze::emu::Spc700::Flags::N, PSW, read(), Y, and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ AND()

void yaze::emu::Spc700::AND ( uint16_t  adr)

Definition at line 170 of file instructions.cc.

References A, adr, yaze::emu::Spc700::Flags::N, PSW, read(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ ANDM()

void yaze::emu::Spc700::ANDM ( uint16_t  dest,
uint8_t  operand 
)

Definition at line 177 of file instructions.cc.

References yaze::emu::Spc700::Flags::N, PSW, read(), write(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ OR()

void yaze::emu::Spc700::OR ( uint16_t  adr)

Definition at line 185 of file instructions.cc.

References A, adr, yaze::emu::Spc700::Flags::N, PSW, read(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ ORM()

void yaze::emu::Spc700::ORM ( uint16_t  dest,
uint8_t  operand 
)

Definition at line 192 of file instructions.cc.

References yaze::emu::Spc700::Flags::N, PSW, read(), write(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ EOR()

void yaze::emu::Spc700::EOR ( uint16_t  adr)

Definition at line 200 of file instructions.cc.

References A, adr, yaze::emu::Spc700::Flags::N, PSW, read(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ EORM()

void yaze::emu::Spc700::EORM ( uint16_t  dest,
uint8_t  operand 
)

Definition at line 207 of file instructions.cc.

References yaze::emu::Spc700::Flags::N, PSW, read(), write(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ ASL()

void yaze::emu::Spc700::ASL ( uint16_t  operand)

Definition at line 219 of file instructions.cc.

References adr, yaze::emu::Spc700::Flags::C, yaze::emu::Spc700::Flags::N, PSW, read(), write(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ LSR()

void yaze::emu::Spc700::LSR ( uint16_t  adr)

Definition at line 230 of file instructions.cc.

References adr, yaze::emu::Spc700::Flags::C, yaze::emu::Spc700::Flags::N, PSW, read(), write(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ ROL()

void yaze::emu::Spc700::ROL ( uint16_t  operand)

Definition at line 241 of file instructions.cc.

References adr, yaze::emu::Spc700::Flags::C, yaze::emu::Spc700::Flags::N, PSW, read(), write(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ ROR()

void yaze::emu::Spc700::ROR ( uint16_t  adr)

Definition at line 253 of file instructions.cc.

References adr, yaze::emu::Spc700::Flags::C, yaze::emu::Spc700::Flags::N, PSW, read(), write(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ XCN()

void yaze::emu::Spc700::XCN ( uint8_t  operand,
bool  isImmediate = false 
)

Definition at line 289 of file instructions.cc.

References imm(), yaze::emu::Spc700::Flags::N, PSW, and yaze::emu::Spc700::Flags::Z.

Here is the call graph for this function:

◆ INC()

void yaze::emu::Spc700::INC ( uint16_t  adr)

Definition at line 269 of file instructions.cc.

References adr, yaze::emu::Spc700::Flags::N, PSW, read(), write(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ DEC()

void yaze::emu::Spc700::DEC ( uint16_t  operand)

Definition at line 279 of file instructions.cc.

References adr, yaze::emu::Spc700::Flags::N, PSW, read(), write(), and yaze::emu::Spc700::Flags::Z.

Referenced by ExecuteInstructions().

Here is the call graph for this function:

◆ MOVW()

void yaze::emu::Spc700::MOVW ( uint16_t &  dest,
uint16_t  operand 
)

Definition at line 301 of file instructions.cc.

References yaze::emu::Spc700::Flags::N, PSW, and yaze::emu::Spc700::Flags::Z.

◆ INCW()

void yaze::emu::Spc700::INCW ( uint16_t &  operand)

Definition at line 308 of file instructions.cc.

References yaze::emu::Spc700::Flags::N, PSW, and yaze::emu::Spc700::Flags::Z.

◆ DECW()

void yaze::emu::Spc700::DECW ( uint16_t &  operand)

Definition at line 315 of file instructions.cc.

References yaze::emu::Spc700::Flags::N, PSW, and yaze::emu::Spc700::Flags::Z.

◆ ADDW()

void yaze::emu::Spc700::ADDW ( uint16_t &  dest,
uint16_t  operand 
)

◆ SUBW()

void yaze::emu::Spc700::SUBW ( uint16_t &  dest,
uint16_t  operand 
)

◆ CMPW()

void yaze::emu::Spc700::CMPW ( uint16_t  operand)

◆ MUL()

void yaze::emu::Spc700::MUL ( uint8_t  operand)

Definition at line 356 of file instructions.cc.

References A, yaze::emu::Spc700::Flags::N, PSW, YA, and yaze::emu::Spc700::Flags::Z.

◆ DIV()

void yaze::emu::Spc700::DIV ( uint8_t  operand)

Definition at line 364 of file instructions.cc.

References A, yaze::emu::Spc700::Flags::N, PSW, Y, and yaze::emu::Spc700::Flags::Z.

◆ BRA()

void yaze::emu::Spc700::BRA ( int8_t  offset)

Definition at line 386 of file instructions.cc.

References PC.

◆ BEQ()

void yaze::emu::Spc700::BEQ ( int8_t  offset)

Definition at line 387 of file instructions.cc.

References PC, PSW, and yaze::emu::Spc700::Flags::Z.

◆ BNE()

void yaze::emu::Spc700::BNE ( int8_t  offset)

Definition at line 388 of file instructions.cc.

References PC, PSW, and yaze::emu::Spc700::Flags::Z.

◆ BCS()

void yaze::emu::Spc700::BCS ( int8_t  offset)

Definition at line 389 of file instructions.cc.

References yaze::emu::Spc700::Flags::C, PC, and PSW.

◆ BCC()

void yaze::emu::Spc700::BCC ( int8_t  offset)

Definition at line 390 of file instructions.cc.

References yaze::emu::Spc700::Flags::C, PC, and PSW.

◆ BVS()

void yaze::emu::Spc700::BVS ( int8_t  offset)

Definition at line 391 of file instructions.cc.

References PC, PSW, and yaze::emu::Spc700::Flags::V.

◆ BVC()

void yaze::emu::Spc700::BVC ( int8_t  offset)

Definition at line 392 of file instructions.cc.

References PC, PSW, and yaze::emu::Spc700::Flags::V.

◆ BMI()

void yaze::emu::Spc700::BMI ( int8_t  offset)

Definition at line 393 of file instructions.cc.

References yaze::emu::Spc700::Flags::N, PC, and PSW.

◆ BPL()

void yaze::emu::Spc700::BPL ( int8_t  offset)

Definition at line 394 of file instructions.cc.

References yaze::emu::Spc700::Flags::N, PC, and PSW.

◆ BBS()

void yaze::emu::Spc700::BBS ( uint8_t  bit,
uint8_t  operand 
)

Definition at line 396 of file instructions.cc.

References PC, and rel().

Here is the call graph for this function:

◆ BBC()

void yaze::emu::Spc700::BBC ( uint8_t  bit,
uint8_t  operand 
)

Definition at line 400 of file instructions.cc.

References PC, and rel().

Here is the call graph for this function:

◆ JMP()

void yaze::emu::Spc700::JMP ( uint16_t  address)

Definition at line 408 of file instructions.cc.

References PC.

◆ CALL()

void yaze::emu::Spc700::CALL ( uint16_t  address)

Definition at line 412 of file instructions.cc.

References PC, and push_byte().

Here is the call graph for this function:

◆ PCALL()

void yaze::emu::Spc700::PCALL ( uint8_t  offset)

Definition at line 419 of file instructions.cc.

References PC, and push_byte().

Here is the call graph for this function:

◆ TCALL()

void yaze::emu::Spc700::TCALL ( uint8_t  offset)

Definition at line 426 of file instructions.cc.

References PC, and push_byte().

Here is the call graph for this function:

◆ BRK()

void yaze::emu::Spc700::BRK ( )

Definition at line 433 of file instructions.cc.

References yaze::emu::Spc700::Flags::B, FlagsToByte(), yaze::emu::Spc700::Flags::I, PC, PSW, push_byte(), push_word(), and read_word().

Here is the call graph for this function:

◆ RET()

void yaze::emu::Spc700::RET ( )

Definition at line 441 of file instructions.cc.

References PC, and pull_word().

Here is the call graph for this function:

◆ RETI()

void yaze::emu::Spc700::RETI ( )

Definition at line 445 of file instructions.cc.

References ByteToFlags(), PC, PSW, pull_byte(), and pull_word().

Here is the call graph for this function:

◆ PUSH()

void yaze::emu::Spc700::PUSH ( uint8_t  operand)

Definition at line 454 of file instructions.cc.

References push_byte().

Here is the call graph for this function:

◆ POP()

void yaze::emu::Spc700::POP ( uint8_t &  operand)

Definition at line 458 of file instructions.cc.

References pull_byte().

Here is the call graph for this function:

◆ SET1()

void yaze::emu::Spc700::SET1 ( uint8_t  bit,
uint8_t &  operand 
)

Definition at line 466 of file instructions.cc.

◆ CLR1()

void yaze::emu::Spc700::CLR1 ( uint8_t  bit,
uint8_t &  operand 
)

Definition at line 470 of file instructions.cc.

◆ TSET1()

void yaze::emu::Spc700::TSET1 ( uint8_t  bit,
uint8_t &  operand 
)

Definition at line 474 of file instructions.cc.

References yaze::emu::Spc700::Flags::C, and PSW.

◆ TCLR1()

void yaze::emu::Spc700::TCLR1 ( uint8_t  bit,
uint8_t &  operand 
)

Definition at line 479 of file instructions.cc.

References yaze::emu::Spc700::Flags::C, and PSW.

◆ AND1()

void yaze::emu::Spc700::AND1 ( uint8_t  bit,
uint8_t &  operand 
)

Definition at line 484 of file instructions.cc.

References yaze::emu::Spc700::Flags::N, PSW, and yaze::emu::Spc700::Flags::Z.

◆ OR1()

void yaze::emu::Spc700::OR1 ( uint8_t  bit,
uint8_t &  operand 
)

Definition at line 490 of file instructions.cc.

References yaze::emu::Spc700::Flags::N, PSW, and yaze::emu::Spc700::Flags::Z.

◆ EOR1()

void yaze::emu::Spc700::EOR1 ( uint8_t  bit,
uint8_t &  operand 
)

Definition at line 496 of file instructions.cc.

References yaze::emu::Spc700::Flags::N, PSW, and yaze::emu::Spc700::Flags::Z.

◆ NOT1()

void yaze::emu::Spc700::NOT1 ( uint8_t  bit,
uint8_t &  operand 
)

Definition at line 502 of file instructions.cc.

References yaze::emu::Spc700::Flags::N, PSW, and yaze::emu::Spc700::Flags::Z.

◆ MOV1()

void yaze::emu::Spc700::MOV1 ( uint8_t  bit,
uint8_t &  operand 
)

Definition at line 508 of file instructions.cc.

References yaze::emu::Spc700::Flags::C, and PSW.

◆ CLRC()

void yaze::emu::Spc700::CLRC ( )

Definition at line 517 of file instructions.cc.

References yaze::emu::Spc700::Flags::C, and PSW.

◆ SETC()

void yaze::emu::Spc700::SETC ( )

Definition at line 518 of file instructions.cc.

References yaze::emu::Spc700::Flags::C, and PSW.

◆ NOTC()

void yaze::emu::Spc700::NOTC ( )

Definition at line 519 of file instructions.cc.

References yaze::emu::Spc700::Flags::C, and PSW.

◆ CLRV()

void yaze::emu::Spc700::CLRV ( )

Definition at line 520 of file instructions.cc.

References yaze::emu::Spc700::Flags::H, PSW, and yaze::emu::Spc700::Flags::V.

◆ CLRP()

void yaze::emu::Spc700::CLRP ( )

Definition at line 521 of file instructions.cc.

References yaze::emu::Spc700::Flags::P, and PSW.

◆ SETP()

void yaze::emu::Spc700::SETP ( )

Definition at line 522 of file instructions.cc.

References yaze::emu::Spc700::Flags::P, and PSW.

◆ EI()

void yaze::emu::Spc700::EI ( )

Definition at line 523 of file instructions.cc.

References yaze::emu::Spc700::Flags::I, and PSW.

◆ DI()

void yaze::emu::Spc700::DI ( )

Definition at line 524 of file instructions.cc.

References yaze::emu::Spc700::Flags::I, and PSW.

◆ NOP()

void yaze::emu::Spc700::NOP ( )

Definition at line 530 of file instructions.cc.

◆ SLEEP()

void yaze::emu::Spc700::SLEEP ( )

Definition at line 534 of file instructions.cc.

◆ STOP()

void yaze::emu::Spc700::STOP ( )

Definition at line 538 of file instructions.cc.

Member Data Documentation

◆ callbacks_

ApuCallbacks yaze::emu::Spc700::callbacks_
private

◆ log_

std::vector<std::string> yaze::emu::Spc700::log_
private

Definition at line 72 of file spc700.h.

◆ stopped_

bool yaze::emu::Spc700::stopped_
private

Definition at line 74 of file spc700.h.

Referenced by ExecuteInstructions(), Reset(), RunOpcode(), and Step().

◆ reset_wanted_

bool yaze::emu::Spc700::reset_wanted_
private

Definition at line 75 of file spc700.h.

Referenced by Reset(), RunOpcode(), and Step().

◆ opcode

uint8_t yaze::emu::Spc700::opcode
private

Definition at line 77 of file spc700.h.

Referenced by ExecuteInstructions(), LogInstruction(), ReadOpcode(), RunOpcode(), and Step().

◆ step

uint32_t yaze::emu::Spc700::step = 0
private

Definition at line 78 of file spc700.h.

Referenced by Reset(), and RunOpcode().

◆ bstep

uint32_t yaze::emu::Spc700::bstep
private

Definition at line 79 of file spc700.h.

Referenced by ExecuteInstructions(), and RunOpcode().

◆ adr

uint16_t yaze::emu::Spc700::adr
private

◆ adr1

uint16_t yaze::emu::Spc700::adr1
private

Definition at line 81 of file spc700.h.

◆ dat

uint8_t yaze::emu::Spc700::dat
private

Definition at line 82 of file spc700.h.

◆ dat16

uint16_t yaze::emu::Spc700::dat16
private

Definition at line 83 of file spc700.h.

◆ param

uint8_t yaze::emu::Spc700::param
private

Definition at line 84 of file spc700.h.

◆ extra_cycles_

int yaze::emu::Spc700::extra_cycles_ = 0
private

Definition at line 85 of file spc700.h.

Referenced by DoBranch(), and Step().

◆ last_opcode_cycles_

int yaze::emu::Spc700::last_opcode_cycles_ = 0
private

Definition at line 88 of file spc700.h.

Referenced by GetLastOpcodeCycles(), and RunOpcode().

◆ ipl_rom_

const uint8_t yaze::emu::Spc700::ipl_rom_[64]
private
Initial value:
{
0xCD, 0xEF, 0xBD, 0xE8, 0x00, 0xC6, 0x1D, 0xD0, 0xFC, 0x8F, 0xAA,
0xF4, 0x8F, 0xBB, 0xF5, 0x78, 0xCC, 0xF4, 0xD0, 0xFB, 0x2F, 0x19,
0xEB, 0xF4, 0xD0, 0xFC, 0x7E, 0xF4, 0xD0, 0x0B, 0xE4, 0xF5, 0xCB,
0xF4, 0xD7, 0x00, 0xFC, 0xD0, 0xF3, 0xAB, 0x01, 0x10, 0xEF, 0x7E,
0xF4, 0x10, 0xEB, 0xBA, 0xF6, 0xDA, 0x00, 0xBA, 0xF4, 0xC4, 0xF4,
0xDD, 0x5D, 0xD0, 0xDB, 0x1F, 0x00, 0x00, 0xC0, 0xFF}

Definition at line 90 of file spc700.h.

◆ A

uint8_t yaze::emu::Spc700::A = 0x00

◆ X

◆ Y

◆ YA

uint16_t yaze::emu::Spc700::YA = 0x00

Definition at line 105 of file spc700.h.

Referenced by CMPW(), and MUL().

◆ PC

◆ SP

uint8_t yaze::emu::Spc700::SP = 0x00

Definition at line 107 of file spc700.h.

Referenced by ExecuteInstructions(), pull_byte(), push_byte(), Reset(), RunOpcode(), and Step().

◆ PSW


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