summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m6502/m6509.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/m6502/m6509.cpp')
-rw-r--r--src/devices/cpu/m6502/m6509.cpp59
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"