diff options
Diffstat (limited to 'src/devices/cpu/m6502/m6510.cpp')
-rw-r--r-- | src/devices/cpu/m6502/m6510.cpp | 82 |
1 files changed, 12 insertions, 70 deletions
diff --git a/src/devices/cpu/m6502/m6510.cpp b/src/devices/cpu/m6502/m6510.cpp index b045d4423f5..ca938474721 100644 --- a/src/devices/cpu/m6502/m6510.cpp +++ b/src/devices/cpu/m6502/m6510.cpp @@ -57,10 +57,7 @@ void m6510_device::init_port() void m6510_device::device_start() { - if(cache_disabled) - mintf = std::make_unique<mi_6510_nd>(this); - else - mintf = std::make_unique<mi_6510_normal>(this); + mintf = std::make_unique<mi_6510>(this); init(); init_port(); @@ -109,12 +106,12 @@ void m6510_device::port_w(uint8_t data) } -m6510_device::mi_6510_normal::mi_6510_normal(m6510_device *_base) +m6510_device::mi_6510::mi_6510(m6510_device *_base) { base = _base; } -uint8_t m6510_device::mi_6510_normal::read(uint16_t adr) +uint8_t m6510_device::mi_6510::read(uint16_t adr) { uint8_t res = program->read_byte(adr); if(adr == 0x0000) @@ -124,7 +121,7 @@ uint8_t m6510_device::mi_6510_normal::read(uint16_t adr) return res; } -uint8_t m6510_device::mi_6510_normal::read_sync(uint16_t adr) +uint8_t m6510_device::mi_6510::read_sync(uint16_t adr) { uint8_t res = scache->read_byte(adr); if(adr == 0x0000) @@ -134,7 +131,7 @@ uint8_t m6510_device::mi_6510_normal::read_sync(uint16_t adr) return res; } -uint8_t m6510_device::mi_6510_normal::read_arg(uint16_t adr) +uint8_t m6510_device::mi_6510::read_arg(uint16_t adr) { uint8_t res = cache->read_byte(adr); if(adr == 0x0000) @@ -144,7 +141,7 @@ uint8_t m6510_device::mi_6510_normal::read_arg(uint16_t adr) return res; } -void m6510_device::mi_6510_normal::write(uint16_t adr, uint8_t val) +void m6510_device::mi_6510::write(uint16_t adr, uint8_t val) { program->write_byte(adr, val); if(adr == 0x0000) @@ -153,30 +150,6 @@ void m6510_device::mi_6510_normal::write(uint16_t adr, uint8_t val) base->port_w(val); } -m6510_device::mi_6510_nd::mi_6510_nd(m6510_device *_base) : mi_6510_normal(_base) -{ -} - -uint8_t m6510_device::mi_6510_nd::read_sync(uint16_t adr) -{ - uint8_t res = sprogram->read_byte(adr); - if(adr == 0x0000) - res = base->dir_r(); - else if(adr == 0x0001) - res = base->port_r(); - return res; -} - -uint8_t m6510_device::mi_6510_nd::read_arg(uint16_t adr) -{ - uint8_t res = program->read_byte(adr); - if(adr == 0x0000) - res = base->dir_r(); - else if(adr == 0x0001) - res = base->port_r(); - return res; -} - m6508_device::m6508_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : m6510_device(mconfig, M6508, tag, owner, clock) @@ -185,10 +158,7 @@ m6508_device::m6508_device(const machine_config &mconfig, const char *tag, devic void m6508_device::device_start() { - if(cache_disabled) - mintf = std::make_unique<mi_6508_nd>(this); - else - mintf = std::make_unique<mi_6508_normal>(this); + mintf = std::make_unique<mi_6508>(this); init(); init_port(); @@ -198,12 +168,12 @@ void m6508_device::device_start() } -m6508_device::mi_6508_normal::mi_6508_normal(m6508_device *_base) +m6508_device::mi_6508::mi_6508(m6508_device *_base) { base = _base; } -uint8_t m6508_device::mi_6508_normal::read(uint16_t adr) +uint8_t m6508_device::mi_6508::read(uint16_t adr) { uint8_t res = program->read_byte(adr); if(adr == 0x0000) @@ -215,7 +185,7 @@ uint8_t m6508_device::mi_6508_normal::read(uint16_t adr) return res; } -uint8_t m6508_device::mi_6508_normal::read_sync(uint16_t adr) +uint8_t m6508_device::mi_6508::read_sync(uint16_t adr) { uint8_t res = scache->read_byte(adr); if(adr == 0x0000) @@ -227,7 +197,7 @@ uint8_t m6508_device::mi_6508_normal::read_sync(uint16_t adr) return res; } -uint8_t m6508_device::mi_6508_normal::read_arg(uint16_t adr) +uint8_t m6508_device::mi_6508::read_arg(uint16_t adr) { uint8_t res = cache->read_byte(adr); if(adr == 0x0000) @@ -239,7 +209,7 @@ uint8_t m6508_device::mi_6508_normal::read_arg(uint16_t adr) return res; } -void m6508_device::mi_6508_normal::write(uint16_t adr, uint8_t val) +void m6508_device::mi_6508::write(uint16_t adr, uint8_t val) { program->write_byte(adr, val); if(adr == 0x0000) @@ -250,33 +220,5 @@ void m6508_device::mi_6508_normal::write(uint16_t adr, uint8_t val) base->ram_page[adr & 0x00ff] = val; } -m6508_device::mi_6508_nd::mi_6508_nd(m6508_device *_base) : mi_6508_normal(_base) -{ -} - -uint8_t m6508_device::mi_6508_nd::read_sync(uint16_t adr) -{ - uint8_t res = sprogram->read_byte(adr); - if(adr == 0x0000) - res = base->dir_r(); - else if(adr == 0x0001) - res = base->port_r(); - else if(adr < 0x0200) - res = base->ram_page[adr & 0x00ff]; - return res; -} - -uint8_t m6508_device::mi_6508_nd::read_arg(uint16_t adr) -{ - uint8_t res = program->read_byte(adr); - if(adr == 0x0000) - res = base->dir_r(); - else if(adr == 0x0001) - res = base->port_r(); - else if(adr < 0x0200) - res = base->ram_page[adr & 0x00ff]; - return res; -} - #include "cpu/m6502/m6510.hxx" |