diff options
author | 2019-05-11 20:16:37 +0300 | |
---|---|---|
committer | 2019-05-11 20:16:37 +0300 | |
commit | 7255f87b9e053528bd02202caeb9dfcc153e0838 (patch) | |
tree | fc6bbe5e3307adbf38968bc65801e2076b4dc9d7 /src | |
parent | b329fa3125a5bbe92213374990e36861c196fe9b (diff) |
c64: Route LORAM to expansion port interface for BusCard. [Curt Coder]
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/bus/c64/buscard.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/c64/exp.cpp | 38 | ||||
-rw-r--r-- | src/devices/bus/c64/exp.h | 8 | ||||
-rw-r--r-- | src/devices/bus/c64/ieee488.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/c64/magic_voice.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/c64/music64.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/c64/sfx_sound_expander.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/c64/supercpu.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/c64/tdos.cpp | 4 | ||||
-rw-r--r-- | src/mame/drivers/c128.cpp | 4 | ||||
-rw-r--r-- | src/mame/drivers/c64.cpp | 4 |
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 | |