mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-26 08:49:37 +00:00
Adjust (abs, y) addressing.
This commit is contained in:
parent
bf5ed98f35
commit
d33deb676f
@ -544,6 +544,17 @@ template <Personality personality, typename T, bool uses_ready_line> void Proces
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
case CycleAddYToAddressLow:
|
||||||
|
next_address_.full = address_.full + y_;
|
||||||
|
address_.halves.low = next_address_.halves.low;
|
||||||
|
if(address_.halves.high != next_address_.halves.high) {
|
||||||
|
page_crossing_stall_read();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
|
||||||
|
#undef page_crossing_stall_read
|
||||||
|
|
||||||
case CycleAddXToAddressLowRead:
|
case CycleAddXToAddressLowRead:
|
||||||
next_address_.full = address_.full + x_;
|
next_address_.full = address_.full + x_;
|
||||||
address_.halves.low = next_address_.halves.low;
|
address_.halves.low = next_address_.halves.low;
|
||||||
@ -559,21 +570,18 @@ template <Personality personality, typename T, bool uses_ready_line> void Proces
|
|||||||
throwaway_read(pc_.full - 1);
|
throwaway_read(pc_.full - 1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CycleAddYToAddressLow:
|
|
||||||
next_address_.full = address_.full + y_;
|
|
||||||
address_.halves.low = next_address_.halves.low;
|
|
||||||
if(address_.halves.high != next_address_.halves.high) {
|
|
||||||
page_crossing_stall_read();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
case CycleAddYToAddressLowRead:
|
case CycleAddYToAddressLowRead:
|
||||||
next_address_.full = address_.full + y_;
|
next_address_.full = address_.full + y_;
|
||||||
address_.halves.low = next_address_.halves.low;
|
address_.halves.low = next_address_.halves.low;
|
||||||
page_crossing_stall_read();
|
|
||||||
break;
|
|
||||||
|
|
||||||
#undef page_crossing_stall_read
|
// A similar rule as for above applies; this one adjusts (abs, y) addressing.
|
||||||
|
|
||||||
|
if(!is_65c02(personality) || next_address_.full == address_.full) {
|
||||||
|
throwaway_read(address_.full);
|
||||||
|
} else {
|
||||||
|
throwaway_read(pc_.full - 1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case OperationCorrectAddressHigh:
|
case OperationCorrectAddressHigh:
|
||||||
// Preserve the uncorrected address in next_address_ (albeit that it's
|
// Preserve the uncorrected address in next_address_ (albeit that it's
|
||||||
|
Loading…
Reference in New Issue
Block a user