From 927938560a10587c5312676d6ffc4a9a11936b70 Mon Sep 17 00:00:00 2001 From: Adrian Conlon Date: Wed, 8 Dec 2021 19:45:07 +0000 Subject: [PATCH] Tidy the Bus reference definition a little --- inc/MemoryMapping.h | 2 ++ src/Bus.cpp | 10 ++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/inc/MemoryMapping.h b/inc/MemoryMapping.h index b702a72..6ccd3fa 100644 --- a/inc/MemoryMapping.h +++ b/inc/MemoryMapping.h @@ -11,6 +11,8 @@ namespace EightBit { enum class AccessLevel { Unknown, ReadOnly, WriteOnly, ReadWrite }; + constexpr auto offset(uint16_t address) const noexcept { return (address - begin) & mask; } + Memory& memory; uint16_t begin = Chip::Mask16; uint16_t mask = 0U; diff --git a/src/Bus.cpp b/src/Bus.cpp index 4cba73e..1924b79 100644 --- a/src/Bus.cpp +++ b/src/Bus.cpp @@ -40,10 +40,8 @@ void EightBit::Bus::loadHexFile(const std::string path) { uint8_t& EightBit::Bus::reference(const uint16_t address) noexcept { const auto mapped = mapping(address); - const uint16_t offset = (address - mapped.begin) & mapped.mask; - if (mapped.access == MemoryMapping::AccessLevel::ReadOnly) { - DATA() = mapped.memory.peek(offset); - return DATA(); - } - return mapped.memory.reference(offset); + const auto offset = mapped.offset(address); + if (mapped.access != MemoryMapping::AccessLevel::ReadOnly) + return mapped.memory.reference(offset); + return DATA() = mapped.memory.peek(offset); }