diff options
Diffstat (limited to 'src/devices/cpu/m6502/m6509.cpp')
-rw-r--r-- | src/devices/cpu/m6502/m6509.cpp | 59 |
1 files changed, 16 insertions, 43 deletions
diff --git a/src/devices/cpu/m6502/m6509.cpp b/src/devices/cpu/m6502/m6509.cpp index 95c2d62b79a..dd4eca50c83 100644 --- a/src/devices/cpu/m6502/m6509.cpp +++ b/src/devices/cpu/m6502/m6509.cpp @@ -2,7 +2,7 @@ // copyright-holders:Olivier Galibert /*************************************************************************** - m6509.c + m6509.cpp 6502 with banking and extended address bus @@ -12,7 +12,7 @@ #include "m6509.h" #include "m6509d.h" -DEFINE_DEVICE_TYPE(M6509, m6509_device, "m6509", "MOS Technology M6509") +DEFINE_DEVICE_TYPE(M6509, m6509_device, "m6509", "MOS Technology 6509") m6509_device::m6509_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : m6502_device(mconfig, M6509, tag, owner, clock), bank_i(0), bank_y(0) @@ -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,14 +52,14 @@ 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)); + uint8_t res = program.read_byte(base->adr_in_bank_i(adr)); if(adr == 0x0000) res = base->bank_i_r(); else if(adr == 0x0001) @@ -70,9 +67,9 @@ 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)); + uint8_t res = csprogram.read_byte(base->adr_in_bank_i(adr)); if(adr == 0x0000) res = base->bank_i_r(); else if(adr == 0x0001) @@ -80,9 +77,9 @@ 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)); + uint8_t res = cprogram.read_byte(base->adr_in_bank_i(adr)); if(adr == 0x0000) res = base->bank_i_r(); else if(adr == 0x0001) @@ -90,9 +87,9 @@ 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)); + uint8_t res = program.read_byte(base->adr_in_bank_y(adr)); if(adr == 0x0000) res = base->bank_i_r(); else if(adr == 0x0001) @@ -100,46 +97,22 @@ 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); + program.write_byte(base->adr_in_bank_i(adr), val); if(adr == 0x0000) base->bank_i_w(val); else if(adr == 0x0001) 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); + program.write_byte(base->adr_in_bank_y(adr), val); if(adr == 0x0000) base->bank_i_w(val); else if(adr == 0x0001) 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" |