mirror of
https://github.com/MoleskiCoder/EightBit.git
synced 2025-03-11 09:31:05 +00:00
RMW simplification
This commit is contained in:
parent
9a0cf0cca8
commit
b582412231
@ -176,20 +176,21 @@ namespace EightBit {
|
|||||||
#define FIXUP_RMW(ADDRESSING, OPERATION) \
|
#define FIXUP_RMW(ADDRESSING, OPERATION) \
|
||||||
{ \
|
{ \
|
||||||
fixup(ADDRESSING()); \
|
fixup(ADDRESSING()); \
|
||||||
const auto result = OPERATION(memoryRead()); \
|
_RMW(OPERATION); \
|
||||||
memoryModifyWrite(result); \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define RMW(ADDRESSING, OPERATION) \
|
#define RMW(ADDRESSING, OPERATION) \
|
||||||
{ \
|
{ \
|
||||||
const auto result = OPERATION(memoryRead(ADDRESSING())); \
|
BUS().ADDRESS() = ADDRESSING(); \
|
||||||
memoryModifyWrite(result); \
|
_RMW(OPERATION); \
|
||||||
}
|
}
|
||||||
|
|
||||||
void memoryModifyWrite(const uint8_t data) noexcept {
|
#define _RMW(OPERATION) \
|
||||||
// The read will have already taken place...
|
{ \
|
||||||
memoryWrite();
|
const auto data = memoryRead(); \
|
||||||
memoryWrite(data);
|
const auto result = OPERATION(data); \
|
||||||
|
memoryWrite(); \
|
||||||
|
memoryWrite(result); \
|
||||||
}
|
}
|
||||||
|
|
||||||
void maybe_fixup(register16_t address, uint8_t unfixed_page, bool always_fixup = false) noexcept {
|
void maybe_fixup(register16_t address, uint8_t unfixed_page, bool always_fixup = false) noexcept {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user