summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2019-05-11 20:16:37 +0300
committer Curt Coder <curtcoder@mail.com>2019-05-11 20:16:37 +0300
commit7255f87b9e053528bd02202caeb9dfcc153e0838 (patch)
treefc6bbe5e3307adbf38968bc65801e2076b4dc9d7 /src
parentb329fa3125a5bbe92213374990e36861c196fe9b (diff)
c64: Route LORAM to expansion port interface for BusCard. [Curt Coder]
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/c64/buscard.cpp4
-rw-r--r--src/devices/bus/c64/exp.cpp38
-rw-r--r--src/devices/bus/c64/exp.h8
-rw-r--r--src/devices/bus/c64/ieee488.cpp4
-rw-r--r--src/devices/bus/c64/magic_voice.cpp4
-rw-r--r--src/devices/bus/c64/music64.cpp4
-rw-r--r--src/devices/bus/c64/sfx_sound_expander.cpp4
-rw-r--r--src/devices/bus/c64/supercpu.cpp4
-rw-r--r--src/devices/bus/c64/tdos.cpp4
-rw-r--r--src/mame/drivers/c128.cpp4
-rw-r--r--src/mame/drivers/c64.cpp4
11 files changed, 43 insertions, 39 deletions
diff --git a/src/devices/bus/c64/buscard.cpp b/src/devices/bus/c64/buscard.cpp
index 68e15cb41f5..31533d68675 100644
--- a/src/devices/bus/c64/buscard.cpp
+++ b/src/devices/bus/c64/buscard.cpp
@@ -160,7 +160,7 @@ void buscard_t::c64_cd_w(offs_t offset, uint8_t data, int sphi2, int ba, int rom
int buscard_t::c64_game_r(offs_t offset, int sphi2, int ba, int rw)
{
- return m_exp->game_r(offset, sphi2, ba, rw, m_slot->hiram());
+ return m_exp->game_r(offset, sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
}
@@ -170,5 +170,5 @@ int buscard_t::c64_game_r(offs_t offset, int sphi2, int ba, int rw)
int buscard_t::c64_exrom_r(offs_t offset, int sphi2, int ba, int rw)
{
- return m_exp->exrom_r(offset, sphi2, ba, rw, m_slot->hiram());
+ return m_exp->exrom_r(offset, sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
}
diff --git a/src/devices/bus/c64/exp.cpp b/src/devices/bus/c64/exp.cpp
index 7f9f5f10993..c05095e2573 100644
--- a/src/devices/bus/c64/exp.cpp
+++ b/src/devices/bus/c64/exp.cpp
@@ -27,13 +27,13 @@ DEFINE_DEVICE_TYPE(C64_EXPANSION_SLOT, c64_expansion_slot_device, "c64_expansion
// device_c64_expansion_card_interface - constructor
//-------------------------------------------------
-device_c64_expansion_card_interface::device_c64_expansion_card_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device),
- m_roml(*this, "roml"),
- m_romh(*this, "romh"),
- m_nvram(*this, "nvram"),
- m_game(1),
- m_exrom(1)
+device_c64_expansion_card_interface::device_c64_expansion_card_interface(const machine_config &mconfig, device_t &device) :
+ device_slot_card_interface(mconfig, device),
+ m_roml(*this, "roml"),
+ m_romh(*this, "romh"),
+ m_nvram(*this, "nvram"),
+ m_game(1),
+ m_exrom(1)
{
m_slot = dynamic_cast<c64_expansion_slot_device *>(device.owner());
}
@@ -58,15 +58,15 @@ device_c64_expansion_card_interface::~device_c64_expansion_card_interface()
//-------------------------------------------------
c64_expansion_slot_device::c64_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, C64_EXPANSION_SLOT, tag, owner, clock),
- device_slot_interface(mconfig, *this),
- device_image_interface(mconfig, *this),
- m_read_dma_cd(*this),
- m_write_dma_cd(*this),
- m_write_irq(*this),
- m_write_nmi(*this),
- m_write_dma(*this),
- m_write_reset(*this), m_card(nullptr), m_hiram(0)
+ device_t(mconfig, C64_EXPANSION_SLOT, tag, owner, clock),
+ device_slot_interface(mconfig, *this),
+ device_image_interface(mconfig, *this),
+ m_read_dma_cd(*this),
+ m_write_dma_cd(*this),
+ m_write_irq(*this),
+ m_write_nmi(*this),
+ m_write_dma(*this),
+ m_write_reset(*this), m_card(nullptr), m_hiram(0)
{
}
@@ -253,11 +253,12 @@ void c64_expansion_slot_device::cd_w(offs_t offset, uint8_t data, int sphi2, int
// game_r - GAME read
//-------------------------------------------------
-int c64_expansion_slot_device::game_r(offs_t offset, int sphi2, int ba, int rw, int hiram)
+int c64_expansion_slot_device::game_r(offs_t offset, int sphi2, int ba, int rw, int loram, int hiram)
{
int state = 1;
m_hiram = hiram;
+ m_loram = loram;
if (m_card != nullptr)
{
@@ -272,11 +273,12 @@ int c64_expansion_slot_device::game_r(offs_t offset, int sphi2, int ba, int rw,
// exrom_r - EXROM read
//-------------------------------------------------
-int c64_expansion_slot_device::exrom_r(offs_t offset, int sphi2, int ba, int rw, int hiram)
+int c64_expansion_slot_device::exrom_r(offs_t offset, int sphi2, int ba, int rw, int loram, int hiram)
{
int state = 1;
m_hiram = hiram;
+ m_loram = loram;
if (m_card != nullptr)
{
diff --git a/src/devices/bus/c64/exp.h b/src/devices/bus/c64/exp.h
index 7cba776f683..f625ca05f07 100644
--- a/src/devices/bus/c64/exp.h
+++ b/src/devices/bus/c64/exp.h
@@ -83,8 +83,8 @@ public:
// computer interface
uint8_t cd_r(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2);
void cd_w(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2);
- int game_r(offs_t offset, int sphi2, int ba, int rw, int hiram);
- int exrom_r(offs_t offset, int sphi2, int ba, int rw, int hiram);
+ int game_r(offs_t offset, int sphi2, int ba, int rw, int loram, int hiram);
+ int exrom_r(offs_t offset, int sphi2, int ba, int rw, int loram, int hiram);
// cartridge interface
uint8_t dma_cd_r(offs_t offset) { return m_read_dma_cd(offset); }
@@ -96,7 +96,8 @@ public:
int phi2() { return clock(); }
int dotclock() { return phi2() * 8; }
int hiram() { return m_hiram; }
-
+ int loram() { return m_loram; }
+
void set_passthrough();
protected:
@@ -132,6 +133,7 @@ protected:
device_c64_expansion_card_interface *m_card;
int m_hiram;
+ int m_loram;
};
diff --git a/src/devices/bus/c64/ieee488.cpp b/src/devices/bus/c64/ieee488.cpp
index d77e5064dfc..aed81dbc9d1 100644
--- a/src/devices/bus/c64/ieee488.cpp
+++ b/src/devices/bus/c64/ieee488.cpp
@@ -106,7 +106,7 @@ READ8_MEMBER( c64_ieee488_device::tpi_pc_r )
data |= m_bus->ifc_r();
data |= m_bus->srq_r() << 1;
- data |= m_exp->exrom_r(offset, 1, 1, 1, 0) << 7;
+ data |= m_exp->exrom_r(offset, 1, 1, 1, 0, 0) << 7;
return data;
}
@@ -240,5 +240,5 @@ void c64_ieee488_device::c64_cd_w(offs_t offset, uint8_t data, int sphi2, int ba
int c64_ieee488_device::c64_game_r(offs_t offset, int sphi2, int ba, int rw)
{
- return m_exp->game_r(offset, sphi2, ba, rw, m_slot->hiram());
+ return m_exp->game_r(offset, sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
}
diff --git a/src/devices/bus/c64/magic_voice.cpp b/src/devices/bus/c64/magic_voice.cpp
index 72d4afe5cf3..3b6c0ebdb62 100644
--- a/src/devices/bus/c64/magic_voice.cpp
+++ b/src/devices/bus/c64/magic_voice.cpp
@@ -97,7 +97,7 @@ READ8_MEMBER( c64_magic_voice_cartridge_device::tpi_pa_r )
uint8_t data = 0;
- data |= m_exp->game_r(get_offset(m_ca), 1, 1, 1, 0) << 5;
+ data |= m_exp->game_r(get_offset(m_ca), 1, 1, 1, 0, 0) << 5;
data |= m_vslsi->eos_r() << 6;
data |= m_fifo->dir_r() << 7;
@@ -144,7 +144,7 @@ READ8_MEMBER( c64_magic_voice_cartridge_device::tpi_pb_r )
uint8_t data = 0;
- data |= m_exp->exrom_r(get_offset(m_ca), 1, 1, 1, 0) << 7;
+ data |= m_exp->exrom_r(get_offset(m_ca), 1, 1, 1, 0, 0) << 7;
return data;
}
diff --git a/src/devices/bus/c64/music64.cpp b/src/devices/bus/c64/music64.cpp
index 9e31a26c62b..28fa6fc1539 100644
--- a/src/devices/bus/c64/music64.cpp
+++ b/src/devices/bus/c64/music64.cpp
@@ -206,7 +206,7 @@ void c64_music64_cartridge_device::c64_cd_w(offs_t offset, uint8_t data, int sph
int c64_music64_cartridge_device::c64_game_r(offs_t offset, int sphi2, int ba, int rw)
{
- return m_exp->game_r(offset, sphi2, ba, rw, m_slot->hiram());
+ return m_exp->game_r(offset, sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
}
@@ -216,5 +216,5 @@ int c64_music64_cartridge_device::c64_game_r(offs_t offset, int sphi2, int ba, i
int c64_music64_cartridge_device::c64_exrom_r(offs_t offset, int sphi2, int ba, int rw)
{
- return m_exp->exrom_r(offset, sphi2, ba, rw, m_slot->hiram());
+ return m_exp->exrom_r(offset, sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
}
diff --git a/src/devices/bus/c64/sfx_sound_expander.cpp b/src/devices/bus/c64/sfx_sound_expander.cpp
index 71229014c46..a85b93bccbf 100644
--- a/src/devices/bus/c64/sfx_sound_expander.cpp
+++ b/src/devices/bus/c64/sfx_sound_expander.cpp
@@ -248,7 +248,7 @@ void c64_sfx_sound_expander_cartridge_device::c64_cd_w(offs_t offset, uint8_t da
int c64_sfx_sound_expander_cartridge_device::c64_game_r(offs_t offset, int sphi2, int ba, int rw)
{
- return m_exp->game_r(get_offset(offset, rw), sphi2, ba, rw, m_slot->hiram());
+ return m_exp->game_r(get_offset(offset, rw), sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
}
@@ -258,5 +258,5 @@ int c64_sfx_sound_expander_cartridge_device::c64_game_r(offs_t offset, int sphi2
int c64_sfx_sound_expander_cartridge_device::c64_exrom_r(offs_t offset, int sphi2, int ba, int rw)
{
- return m_exp->exrom_r(get_offset(offset, rw), sphi2, ba, rw, m_slot->hiram());
+ return m_exp->exrom_r(get_offset(offset, rw), sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
}
diff --git a/src/devices/bus/c64/supercpu.cpp b/src/devices/bus/c64/supercpu.cpp
index 4e48d77c35c..e0fe2e2a1ea 100644
--- a/src/devices/bus/c64/supercpu.cpp
+++ b/src/devices/bus/c64/supercpu.cpp
@@ -285,7 +285,7 @@ void c64_supercpu_device::c64_cd_w(offs_t offset, uint8_t data, int sphi2, int b
int c64_supercpu_device::c64_game_r(offs_t offset, int sphi2, int ba, int rw)
{
- return m_exp->game_r(offset, sphi2, ba, rw, m_slot->hiram());
+ return m_exp->game_r(offset, sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
}
@@ -295,5 +295,5 @@ int c64_supercpu_device::c64_game_r(offs_t offset, int sphi2, int ba, int rw)
int c64_supercpu_device::c64_exrom_r(offs_t offset, int sphi2, int ba, int rw)
{
- return m_exp->exrom_r(offset, sphi2, ba, rw, m_slot->hiram());
+ return m_exp->exrom_r(offset, sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
}
diff --git a/src/devices/bus/c64/tdos.cpp b/src/devices/bus/c64/tdos.cpp
index b52b61f57a4..5f8a9a4c456 100644
--- a/src/devices/bus/c64/tdos.cpp
+++ b/src/devices/bus/c64/tdos.cpp
@@ -319,7 +319,7 @@ void c64_tdos_cartridge_device::c64_cd_w(offs_t offset, uint8_t data, int sphi2,
int c64_tdos_cartridge_device::c64_game_r(offs_t offset, int sphi2, int ba, int rw)
{
- return m_enabled ? 1 : m_exp->game_r(offset, sphi2, ba, rw, m_slot->hiram());
+ return m_enabled ? 1 : m_exp->game_r(offset, sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
}
@@ -329,5 +329,5 @@ int c64_tdos_cartridge_device::c64_game_r(offs_t offset, int sphi2, int ba, int
int c64_tdos_cartridge_device::c64_exrom_r(offs_t offset, int sphi2, int ba, int rw)
{
- return m_enabled ? 0 : m_exp->exrom_r(offset, sphi2, ba, rw, m_slot->hiram());
+ return m_enabled ? 0 : m_exp->exrom_r(offset, sphi2, ba, rw, m_slot->loram(), m_slot->hiram());
}
diff --git a/src/mame/drivers/c128.cpp b/src/mame/drivers/c128.cpp
index 9e5c25375b1..3777131cbdd 100644
--- a/src/mame/drivers/c128.cpp
+++ b/src/mame/drivers/c128.cpp
@@ -319,8 +319,8 @@ int c128_state::read_pla(offs_t offset, offs_t ca, offs_t vma, int ba, int rw, i
int vicfix = 1;
int sphi2 = m_vic->phi0_r();
- m_game = m_exp->game_r(ca, sphi2, ba, rw, m_hiram);
- m_exrom = m_exp->exrom_r(ca, sphi2, ba, rw, m_hiram);
+ m_game = m_exp->game_r(ca, sphi2, ba, rw, m_loram, m_hiram);
+ m_exrom = m_exp->exrom_r(ca, sphi2, ba, rw, m_loram, m_hiram);
uint32_t input = sphi2 << 26 | m_va14 << 25 | m_charen << 24 |
m_hiram << 23 | m_loram << 22 | ba << 21 | VMA5 << 20 | VMA4 << 19 | ms0 << 18 | ms1 << 17 | ms2 << 16 |
diff --git a/src/mame/drivers/c64.cpp b/src/mame/drivers/c64.cpp
index 62a5694e4eb..3ee9f47869b 100644
--- a/src/mame/drivers/c64.cpp
+++ b/src/mame/drivers/c64.cpp
@@ -445,8 +445,8 @@ int c64_state::read_pla(offs_t offset, offs_t va, int rw, int aec, int ba)
//int ba = m_vic->ba_r();
//int aec = !m_vic->aec_r();
int sphi2 = m_vic->phi0_r();
- int game = m_exp->game_r(offset, sphi2, ba, rw, m_hiram);
- int exrom = m_exp->exrom_r(offset, sphi2, ba, rw, m_hiram);
+ int game = m_exp->game_r(offset, sphi2, ba, rw, m_loram, m_hiram);
+ int exrom = m_exp->exrom_r(offset, sphi2, ba, rw, m_loram, m_hiram);
int cas = 0;
uint32_t input = VA12 << 15 | VA13 << 14 | game << 13 | exrom << 12 | rw << 11 | aec << 10 | ba << 9 | A12 << 8 |