CPU: Fixed transfer instructions (based on CPUTRN test rom)
This commit is contained in:
parent
f0bd820264
commit
930f504861
1 changed files with 11 additions and 3 deletions
|
@ -835,7 +835,7 @@ void Cpu::TAY()
|
||||||
|
|
||||||
void Cpu::TCD()
|
void Cpu::TCD()
|
||||||
{
|
{
|
||||||
SetRegister(_state.DBR, (uint8_t)_state.A);
|
SetRegister(_state.D, _state.A, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cpu::TCS()
|
void Cpu::TCS()
|
||||||
|
@ -845,7 +845,7 @@ void Cpu::TCS()
|
||||||
|
|
||||||
void Cpu::TDC()
|
void Cpu::TDC()
|
||||||
{
|
{
|
||||||
SetRegister(_state.A, _state.DBR, CheckFlag(ProcFlags::MemoryMode8));
|
SetRegister(_state.A, _state.D, CheckFlag(ProcFlags::MemoryMode8));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cpu::TSC()
|
void Cpu::TSC()
|
||||||
|
@ -891,13 +891,21 @@ void Cpu::XBA()
|
||||||
|
|
||||||
void Cpu::XCE()
|
void Cpu::XCE()
|
||||||
{
|
{
|
||||||
bool carry = (_state.PS & ProcFlags::Carry) != 0;
|
bool carry = CheckFlag(ProcFlags::Carry);
|
||||||
if(_state.EmulationMode) {
|
if(_state.EmulationMode) {
|
||||||
SetFlags(ProcFlags::Carry);
|
SetFlags(ProcFlags::Carry);
|
||||||
} else {
|
} else {
|
||||||
ClearFlags(ProcFlags::Carry);
|
ClearFlags(ProcFlags::Carry);
|
||||||
}
|
}
|
||||||
_state.EmulationMode = carry;
|
_state.EmulationMode = carry;
|
||||||
|
|
||||||
|
if(_state.EmulationMode) {
|
||||||
|
SetFlags(ProcFlags::IndexMode8 | ProcFlags::MemoryMode8);
|
||||||
|
//_state.A &= 0xFF;
|
||||||
|
_state.Y &= 0xFF;
|
||||||
|
_state.X &= 0xFF;
|
||||||
|
_state.SP = 0x100 | (_state.SP & 0xFF);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************
|
/*****************
|
||||||
|
|
Loading…
Add table
Reference in a new issue