1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-22 12:33:29 +00:00

Adjust (abs, y) addressing.

This commit is contained in:
Thomas Harte 2023-12-20 15:55:00 -05:00
parent bf5ed98f35
commit d33deb676f

View File

@ -544,6 +544,17 @@ template <Personality personality, typename T, bool uses_ready_line> void Proces
break;
}
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:
next_address_.full = address_.full + x_;
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);
}
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:
next_address_.full = address_.full + y_;
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:
// Preserve the uncorrected address in next_address_ (albeit that it's