mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-11 15:30:52 +00:00
Adds PHD, PHK and 8-bit PHP and PLP.
This commit is contained in:
parent
b608e11965
commit
b510b9d337
@ -334,12 +334,64 @@ template <typename BusHandler> void Processor<BusHandler>::run_for(const Cycles
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case PLD:
|
case PLD:
|
||||||
direct_ = (instruction_buffer_.value & 0xff) << 16;
|
direct_ = instruction_buffer_.value;
|
||||||
flags_.set_nz(instruction_buffer_.value);
|
flags_.set_nz(instruction_buffer_.value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PLP:
|
||||||
|
flags_.set(instruction_buffer_.value);
|
||||||
|
|
||||||
// The below attempts to obey the 8/16-bit mixed transfer rules
|
if(!emulation_flag_) {
|
||||||
|
assert(false); // TODO: M and X.
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case STA:
|
||||||
|
data_buffer_.value = a_.full & m_masks_[1];
|
||||||
|
data_buffer_.size = 2 - m_flag();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case STZ:
|
||||||
|
data_buffer_.value = 0;
|
||||||
|
data_buffer_.size = 2 - m_flag();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case STX:
|
||||||
|
data_buffer_.value = x_.full & x_masks_[1];
|
||||||
|
data_buffer_.size = 2 - x_flag();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case STY:
|
||||||
|
data_buffer_.value = y_.full & x_masks_[1];
|
||||||
|
data_buffer_.size = 2 - m_flag();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PHB:
|
||||||
|
data_buffer_.value = data_bank_ >> 16;
|
||||||
|
data_buffer_.size = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PHK:
|
||||||
|
data_buffer_.value = program_bank_ >> 16;
|
||||||
|
data_buffer_.size = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PHD:
|
||||||
|
data_buffer_.value = direct_;
|
||||||
|
data_buffer_.size = 2;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PHP:
|
||||||
|
data_buffer_.value = flags_.get();
|
||||||
|
|
||||||
|
if(!emulation_flag_) {
|
||||||
|
assert(false); // TODO: M and X.
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NOP: break;
|
||||||
|
|
||||||
|
// The below attempt to obey the 8/16-bit mixed transfer rules
|
||||||
// as documented in https://softpixel.com/~cwright/sianse/docs/65816NFO.HTM
|
// as documented in https://softpixel.com/~cwright/sianse/docs/65816NFO.HTM
|
||||||
// (and makes reasonable guesses as to the N flag)
|
// (and makes reasonable guesses as to the N flag)
|
||||||
|
|
||||||
@ -383,33 +435,6 @@ template <typename BusHandler> void Processor<BusHandler>::run_for(const Cycles
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case STA:
|
|
||||||
data_buffer_.value = a_.full & m_masks_[1];
|
|
||||||
data_buffer_.size = 2 - m_flag();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case STZ:
|
|
||||||
data_buffer_.value = 0;
|
|
||||||
data_buffer_.size = 2 - m_flag();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case STX:
|
|
||||||
data_buffer_.value = x_.full & x_masks_[1];
|
|
||||||
data_buffer_.size = 2 - x_flag();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case STY:
|
|
||||||
data_buffer_.value = y_.full & x_masks_[1];
|
|
||||||
data_buffer_.size = 2 - m_flag();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PHB:
|
|
||||||
data_buffer_.value = a_.halves.high;
|
|
||||||
data_buffer_.size = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case NOP: break;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Jumps.
|
// Jumps.
|
||||||
//
|
//
|
||||||
@ -648,8 +673,7 @@ template <typename BusHandler> void Processor<BusHandler>::run_for(const Cycles
|
|||||||
} break;
|
} break;
|
||||||
|
|
||||||
// TODO:
|
// TODO:
|
||||||
// PLP,
|
// PHK,
|
||||||
// PHP, PHD, PHK,
|
|
||||||
// TRB, TSB,
|
// TRB, TSB,
|
||||||
// REP, SEP,
|
// REP, SEP,
|
||||||
// XCE, XBA,
|
// XCE, XBA,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user