diff options
author | 2019-11-02 12:14:01 -0400 | |
---|---|---|
committer | 2019-11-02 12:18:18 -0400 | |
commit | 40a75840af82c667cdf95494e681d44e2e78e588 (patch) | |
tree | 06d6869e2f49fbc8c8cb92c66fad434d45896514 /src/devices/cpu/m6502/m6509.cpp | |
parent | 11ad6ed232cb46366ae70bfa7717534d977f3e6a (diff) |
m6502: Eliminate the disable_cache hack (nw)
Now that `direct_read_data` has been replaced with `memory_access_cache`, which is better equipped to deal with dynamic banking, there should be all the more reason to put an end to this pernicious antipattern.
Diffstat (limited to 'src/devices/cpu/m6502/m6509.cpp')
-rw-r--r-- | src/devices/cpu/m6502/m6509.cpp | 43 |
1 files changed, 8 insertions, 35 deletions
diff --git a/src/devices/cpu/m6502/m6509.cpp b/src/devices/cpu/m6502/m6509.cpp index 95c2d62b79a..ea42fabd304 100644 --- a/src/devices/cpu/m6502/m6509.cpp +++ b/src/devices/cpu/m6502/m6509.cpp @@ -25,10 +25,7 @@ m6509_device::m6509_device(const machine_config &mconfig, const char *tag, devic void m6509_device::device_start() { - if(cache_disabled) - mintf = std::make_unique<mi_6509_nd>(this); - else - mintf = std::make_unique<mi_6509_normal>(this); + mintf = std::make_unique<mi_6509>(this); init(); @@ -55,12 +52,12 @@ std::unique_ptr<util::disasm_interface> m6509_device::create_disassembler() return std::make_unique<m6509_disassembler>(); } -m6509_device::mi_6509_normal::mi_6509_normal(m6509_device *_base) +m6509_device::mi_6509::mi_6509(m6509_device *_base) { base = _base; } -uint8_t m6509_device::mi_6509_normal::read(uint16_t adr) +uint8_t m6509_device::mi_6509::read(uint16_t adr) { uint8_t res = program->read_byte(base->adr_in_bank_i(adr)); if(adr == 0x0000) @@ -70,7 +67,7 @@ uint8_t m6509_device::mi_6509_normal::read(uint16_t adr) return res; } -uint8_t m6509_device::mi_6509_normal::read_sync(uint16_t adr) +uint8_t m6509_device::mi_6509::read_sync(uint16_t adr) { uint8_t res = scache->read_byte(base->adr_in_bank_i(adr)); if(adr == 0x0000) @@ -80,7 +77,7 @@ uint8_t m6509_device::mi_6509_normal::read_sync(uint16_t adr) return res; } -uint8_t m6509_device::mi_6509_normal::read_arg(uint16_t adr) +uint8_t m6509_device::mi_6509::read_arg(uint16_t adr) { uint8_t res = cache->read_byte(base->adr_in_bank_i(adr)); if(adr == 0x0000) @@ -90,7 +87,7 @@ uint8_t m6509_device::mi_6509_normal::read_arg(uint16_t adr) return res; } -uint8_t m6509_device::mi_6509_normal::read_9(uint16_t adr) +uint8_t m6509_device::mi_6509::read_9(uint16_t adr) { uint8_t res = program->read_byte(base->adr_in_bank_y(adr)); if(adr == 0x0000) @@ -100,7 +97,7 @@ uint8_t m6509_device::mi_6509_normal::read_9(uint16_t adr) return res; } -void m6509_device::mi_6509_normal::write(uint16_t adr, uint8_t val) +void m6509_device::mi_6509::write(uint16_t adr, uint8_t val) { program->write_byte(base->adr_in_bank_i(adr), val); if(adr == 0x0000) @@ -109,7 +106,7 @@ void m6509_device::mi_6509_normal::write(uint16_t adr, uint8_t val) base->bank_y_w(val); } -void m6509_device::mi_6509_normal::write_9(uint16_t adr, uint8_t val) +void m6509_device::mi_6509::write_9(uint16_t adr, uint8_t val) { program->write_byte(base->adr_in_bank_y(adr), val); if(adr == 0x0000) @@ -118,28 +115,4 @@ void m6509_device::mi_6509_normal::write_9(uint16_t adr, uint8_t val) base->bank_y_w(val); } -m6509_device::mi_6509_nd::mi_6509_nd(m6509_device *_base) : mi_6509_normal(_base) -{ -} - -uint8_t m6509_device::mi_6509_nd::read_sync(uint16_t adr) -{ - uint8_t res = sprogram->read_byte(base->adr_in_bank_i(adr)); - if(adr == 0x0000) - res = base->bank_i_r(); - else if(adr == 0x0001) - res = base->bank_y_r(); - return res; -} - -uint8_t m6509_device::mi_6509_nd::read_arg(uint16_t adr) -{ - uint8_t res = program->read_byte(base->adr_in_bank_i(adr)); - if(adr == 0x0000) - res = base->bank_i_r(); - else if(adr == 0x0001) - res = base->bank_y_r(); - return res; -} - #include "cpu/m6502/m6509.hxx" |