msx, bus/msx_cart, bus/msx_slot: Configuration and bus modernization (nw)

- Eliminate all MCFG_ macros
- Add address space finders to replace most instances of machine().device
- Use device_post_load instead of explicitly registering callbacks
- Simplify read/write handlers in bus devices
This commit is contained in:
AJR 2019-03-09 23:51:04 -05:00
parent 15fc7aac93
commit afce025856
72 changed files with 2720 additions and 2481 deletions

View File

@ -18,9 +18,8 @@ msx_cart_arc_device::msx_cart_arc_device(const machine_config &mconfig, const ch
void msx_cart_arc_device::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_write_handler(0x7f, 0x7f, write8_delegate(FUNC(msx_cart_arc_device::io_7f_w), this));
space.install_read_handler(0x7f, 0x7f, read8_delegate(FUNC(msx_cart_arc_device::io_7f_r), this));
io_space().install_write_handler(0x7f, 0x7f, write8smo_delegate(FUNC(msx_cart_arc_device::io_7f_w), this));
io_space().install_read_handler(0x7f, 0x7f, read8smo_delegate(FUNC(msx_cart_arc_device::io_7f_r), this));
}
@ -39,7 +38,7 @@ void msx_cart_arc_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_arc_device::read_cart)
uint8_t msx_cart_arc_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@ -49,7 +48,7 @@ READ8_MEMBER(msx_cart_arc_device::read_cart)
}
WRITE8_MEMBER(msx_cart_arc_device::io_7f_w)
void msx_cart_arc_device::io_7f_w(uint8_t data)
{
if (data == 0x35)
{
@ -58,7 +57,7 @@ WRITE8_MEMBER(msx_cart_arc_device::io_7f_w)
}
READ8_MEMBER(msx_cart_arc_device::io_7f_r)
uint8_t msx_cart_arc_device::io_7f_r()
{
return ((m_7f & 0x03) == 0x03) ? 0xda : 0xff;
}

View File

@ -18,10 +18,7 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
DECLARE_WRITE8_MEMBER(io_7f_w);
DECLARE_READ8_MEMBER(io_7f_r);
virtual uint8_t read_cart(offs_t offset) override;
protected:
// device-level overrides
@ -29,6 +26,9 @@ protected:
virtual void device_reset() override;
private:
void io_7f_w(uint8_t data);
uint8_t io_7f_r();
uint8_t m_7f;
};

View File

@ -27,8 +27,12 @@ msx_cart_ascii8_device::msx_cart_ascii8_device(const machine_config &mconfig, co
void msx_cart_ascii8_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_ascii8_device::restore_banks), this));
void msx_cart_ascii8_device::device_post_load()
{
restore_banks();
}
@ -72,7 +76,7 @@ void msx_cart_ascii8_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_ascii8_device::read_cart)
uint8_t msx_cart_ascii8_device::read_cart(offs_t offset)
{
if ( offset >= 0x4000 && offset < 0xC000 )
{
@ -82,7 +86,7 @@ READ8_MEMBER(msx_cart_ascii8_device::read_cart)
}
WRITE8_MEMBER(msx_cart_ascii8_device::write_cart)
void msx_cart_ascii8_device::write_cart(offs_t offset, uint8_t data)
{
if (offset >= 0x6000 && offset < 0x8000)
{
@ -111,8 +115,12 @@ msx_cart_ascii16_device::msx_cart_ascii16_device(const machine_config &mconfig,
void msx_cart_ascii16_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_ascii16_device::restore_banks), this));
void msx_cart_ascii16_device::device_post_load()
{
restore_banks();
}
@ -156,7 +164,7 @@ void msx_cart_ascii16_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_ascii16_device::read_cart)
uint8_t msx_cart_ascii16_device::read_cart(offs_t offset)
{
if ( offset >= 0x4000 && offset < 0xC000 )
{
@ -166,7 +174,7 @@ READ8_MEMBER(msx_cart_ascii16_device::read_cart)
}
WRITE8_MEMBER(msx_cart_ascii16_device::write_cart)
void msx_cart_ascii16_device::write_cart(offs_t offset, uint8_t data)
{
if (offset >= 0x6000 && offset < 0x6800)
{
@ -202,8 +210,12 @@ msx_cart_ascii8_sram_device::msx_cart_ascii8_sram_device(const machine_config &m
void msx_cart_ascii8_sram_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_ascii8_sram_device::restore_banks), this));
void msx_cart_ascii8_sram_device::device_post_load()
{
restore_banks();
}
@ -272,7 +284,7 @@ void msx_cart_ascii8_sram_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_ascii8_sram_device::read_cart)
uint8_t msx_cart_ascii8_sram_device::read_cart(offs_t offset)
{
if ( offset >= 0x4000 && offset < 0xC000 )
{
@ -287,7 +299,7 @@ READ8_MEMBER(msx_cart_ascii8_sram_device::read_cart)
}
WRITE8_MEMBER(msx_cart_ascii8_sram_device::write_cart)
void msx_cart_ascii8_sram_device::write_cart(offs_t offset, uint8_t data)
{
if (offset >= 0x6000 && offset < 0x8000)
{
@ -327,8 +339,12 @@ msx_cart_ascii16_sram_device::msx_cart_ascii16_sram_device(const machine_config
void msx_cart_ascii16_sram_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_ascii16_sram_device::restore_banks), this));
void msx_cart_ascii16_sram_device::device_post_load()
{
restore_banks();
}
@ -397,7 +413,7 @@ void msx_cart_ascii16_sram_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_ascii16_sram_device::read_cart)
uint8_t msx_cart_ascii16_sram_device::read_cart(offs_t offset)
{
if ( offset >= 0x4000 && offset < 0xC000 )
{
@ -419,7 +435,7 @@ READ8_MEMBER(msx_cart_ascii16_sram_device::read_cart)
}
WRITE8_MEMBER(msx_cart_ascii16_sram_device::write_cart)
void msx_cart_ascii16_sram_device::write_cart(offs_t offset, uint8_t data)
{
if (offset >= 0x6000 && offset < 0x6800)
{
@ -461,8 +477,12 @@ msx_cart_msxwrite_device::msx_cart_msxwrite_device(const machine_config &mconfig
void msx_cart_msxwrite_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_msxwrite_device::restore_banks), this));
void msx_cart_msxwrite_device::device_post_load()
{
restore_banks();
}
@ -506,7 +526,7 @@ void msx_cart_msxwrite_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_msxwrite_device::read_cart)
uint8_t msx_cart_msxwrite_device::read_cart(offs_t offset)
{
if ( offset >= 0x4000 && offset < 0xC000 )
{
@ -516,7 +536,7 @@ READ8_MEMBER(msx_cart_msxwrite_device::read_cart)
}
WRITE8_MEMBER(msx_cart_msxwrite_device::write_cart)
void msx_cart_msxwrite_device::write_cart(offs_t offset, uint8_t data)
{
// The rom writes to 6fff and 7fff for banking, unknown whether
// other locations also trigger banking.

View File

@ -22,13 +22,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();
@ -46,13 +47,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();
@ -70,13 +72,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();
@ -97,13 +100,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();
@ -124,13 +128,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();

View File

@ -94,9 +94,8 @@ const tiny_rom_entry *msx_cart_bm_012_device::device_rom_region() const
void msx_cart_bm_012_device::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_write_handler(0x70, 0x73, write8_delegate(FUNC(z80pio_device::write_alt), m_bm012_pio.target()));
space.install_read_handler(0x70, 0x73, read8_delegate(FUNC(z80pio_device::read_alt), m_bm012_pio.target()));
io_space().install_write_handler(0x70, 0x73, write8_delegate(FUNC(z80pio_device::write_alt), m_bm012_pio.target()));
io_space().install_read_handler(0x70, 0x73, read8_delegate(FUNC(z80pio_device::read_alt), m_bm012_pio.target()));
}

View File

@ -26,6 +26,8 @@
#include "super_swangi.h"
#include "yamaha.h"
#include "bus/msx_slot/cartridge.h"
void msx_cart(device_slot_interface &device)
{
@ -72,7 +74,7 @@ void msx_cart(device_slot_interface &device)
msx_cart_interface::msx_cart_interface(const machine_config &mconfig, device_t &device)
: device_slot_card_interface(mconfig, device)
, m_out_irq_cb(*this)
, m_exp(nullptr)
{
}
@ -100,6 +102,21 @@ void msx_cart_interface::sram_alloc(uint32_t size)
std::fill_n(m_sram.begin(), size, 0x00);
}
WRITE_LINE_MEMBER(msx_cart_interface::irq_out)
{
m_exp->irq_out(state);
}
address_space &msx_cart_interface::memory_space() const
{
return m_exp->memory_space();
}
address_space &msx_cart_interface::io_space() const
{
return m_exp->io_space();
}
// Several yamaha machines had 60 pin expansion slots. The pinouts of these slots was
// exactly the same as the regular 50 pin cartridge slots. The lowest 10 pins are simply

View File

@ -10,19 +10,26 @@ void msx_cart(device_slot_interface &device);
void msx_yamaha_60pin(device_slot_interface &device); // 60 pin expansion slots as found in yamaha machines
class msx_slot_cartridge_device;
class msx_cart_interface : public device_slot_card_interface
{
public:
template <class Object> void set_out_irq_cb(Object &&cb) { m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
friend class msx_slot_cartridge_device;
public:
// This is called after loading cartridge contents and allows the cartridge
// implementation to perform some additional initialization based on the
// cartridge contents.
virtual void initialize_cartridge() { }
virtual void interface_pre_start() override { assert(m_exp != nullptr); }
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart) { return 0xff; }
virtual DECLARE_WRITE8_MEMBER(write_cart) { }
virtual uint8_t read_cart(offs_t offset) { return 0xff; }
virtual void write_cart(offs_t offset, uint8_t data) { }
DECLARE_WRITE_LINE_MEMBER(irq_out);
address_space &memory_space() const;
address_space &io_space() const;
// ROM/RAM/SRAM management
// Mainly used by the cartridge slot when loading images
@ -43,13 +50,13 @@ public:
protected:
msx_cart_interface(const machine_config &mconfig, device_t &device);
virtual void interface_pre_start() override { m_out_irq_cb.resolve_safe(); }
std::vector<uint8_t> m_rom;
std::vector<uint8_t> m_ram;
std::vector<uint8_t> m_rom_vlm5030;
std::vector<uint8_t> m_sram;
devcb_write_line m_out_irq_cb;
private:
msx_slot_cartridge_device *m_exp;
};

View File

@ -21,8 +21,12 @@ msx_cart_crossblaim_device::msx_cart_crossblaim_device(const machine_config &mco
void msx_cart_crossblaim_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_crossblaim_device::restore_banks), this));
void msx_cart_crossblaim_device::device_post_load()
{
restore_banks();
}
@ -58,7 +62,7 @@ void msx_cart_crossblaim_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_crossblaim_device::read_cart)
uint8_t msx_cart_crossblaim_device::read_cart(offs_t offset)
{
uint8_t *bank_base = m_bank_base[offset >> 14];
@ -71,7 +75,7 @@ READ8_MEMBER(msx_cart_crossblaim_device::read_cart)
}
WRITE8_MEMBER(msx_cart_crossblaim_device::write_cart)
void msx_cart_crossblaim_device::write_cart(offs_t offset, uint8_t data)
{
m_selected_bank = data & 3;
if (m_selected_bank == 0)

View File

@ -18,13 +18,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();

View File

@ -272,12 +272,10 @@ void msx_cart_disk_type1_device::device_start()
save_item(NAME(m_side_control));
save_item(NAME(m_control));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_disk_type1_device::post_load), this));
}
void msx_cart_disk_type1_device::post_load()
void msx_cart_disk_type1_device::device_post_load()
{
uint8_t data = m_control;
@ -342,7 +340,7 @@ void msx_cart_disk_type1_device::device_reset()
}
READ8_MEMBER(msx_cart_disk_type1_device::read_cart)
uint8_t msx_cart_disk_type1_device::read_cart(offs_t offset)
{
switch (offset)
{
@ -383,7 +381,7 @@ READ8_MEMBER(msx_cart_disk_type1_device::read_cart)
}
WRITE8_MEMBER(msx_cart_disk_type1_device::write_cart)
void msx_cart_disk_type1_device::write_cart(offs_t offset, uint8_t data)
{
switch (offset)
{
@ -429,8 +427,6 @@ void msx_cart_disk_type2_device::device_start()
m_led.resolve();
save_item(NAME(m_control));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_disk_type2_device::post_load), this));
}
@ -440,7 +436,7 @@ void msx_cart_disk_type2_device::device_reset()
}
void msx_cart_disk_type2_device::post_load()
void msx_cart_disk_type2_device::device_post_load()
{
uint8_t data = m_control;
@ -487,7 +483,7 @@ void msx_cart_disk_type2_device::set_control(uint8_t data)
}
READ8_MEMBER(msx_cart_disk_type2_device::read_cart)
uint8_t msx_cart_disk_type2_device::read_cart(offs_t offset)
{
switch (offset)
{
@ -520,7 +516,7 @@ READ8_MEMBER(msx_cart_disk_type2_device::read_cart)
}
WRITE8_MEMBER(msx_cart_disk_type2_device::write_cart)
void msx_cart_disk_type2_device::write_cart(offs_t offset, uint8_t data)
{
switch (offset)
{
@ -568,8 +564,10 @@ void msx_cart_fsfd1a_device::device_reset()
}
READ8_MEMBER(msx_cart_fsfd1a_device::read_cart)
uint8_t msx_cart_fsfd1a_device::read_cart(offs_t offset)
{
address_space &space = machine().dummy_space();
switch (offset)
{
case 0x7ffa:
@ -589,8 +587,10 @@ READ8_MEMBER(msx_cart_fsfd1a_device::read_cart)
}
WRITE8_MEMBER(msx_cart_fsfd1a_device::write_cart)
void msx_cart_fsfd1a_device::write_cart(offs_t offset, uint8_t data)
{
address_space &space = machine().dummy_space();
switch (offset)
{
case 0x7ff8:

View File

@ -45,8 +45,8 @@ protected:
class msx_cart_disk_type1_device : public msx_cart_disk_wd_device
{
public:
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
msx_cart_disk_type1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@ -54,8 +54,7 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
void post_load();
virtual void device_post_load() override;
output_finder<> m_led;
uint8_t m_side_control;
@ -69,8 +68,8 @@ protected:
class msx_cart_disk_type2_device : public msx_cart_disk_wd_device
{
public:
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
msx_cart_disk_type2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@ -78,8 +77,7 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
void post_load();
virtual void device_post_load() override;
output_finder<> m_led;
uint8_t m_control;
@ -139,8 +137,8 @@ protected:
// device-level overrides
virtual void device_add_mconfig(machine_config &config) override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
};

View File

@ -36,7 +36,7 @@ void msx_cart_dooly_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_dooly_device::read_cart)
uint8_t msx_cart_dooly_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@ -54,7 +54,7 @@ READ8_MEMBER(msx_cart_dooly_device::read_cart)
}
WRITE8_MEMBER(msx_cart_dooly_device::write_cart)
void msx_cart_dooly_device::write_cart(offs_t offset, uint8_t data)
{
if (offset >= 0x4000 && offset < 0xc000)
{

View File

@ -18,8 +18,8 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides

View File

@ -46,11 +46,14 @@ void msx_cart_fmpac_device::device_start()
save_item(NAME(m_1fff));
save_item(NAME(m_7ff6));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_fmpac_device::restore_banks), this));
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_write_handler(0x7c, 0x7d, write8_delegate(FUNC(msx_cart_fmpac_device::write_ym2413), this));
io_space().install_write_handler(0x7c, 0x7d, write8sm_delegate(FUNC(msx_cart_fmpac_device::write_ym2413), this));
}
void msx_cart_fmpac_device::device_post_load()
{
restore_banks();
}
@ -87,7 +90,7 @@ void msx_cart_fmpac_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_fmpac_device::read_cart)
uint8_t msx_cart_fmpac_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0x8000)
{
@ -116,7 +119,7 @@ READ8_MEMBER(msx_cart_fmpac_device::read_cart)
}
WRITE8_MEMBER(msx_cart_fmpac_device::write_cart)
void msx_cart_fmpac_device::write_cart(offs_t offset, uint8_t data)
{
if (offset >= 0x4000 && offset < 0x6000)
{
@ -159,7 +162,7 @@ WRITE8_MEMBER(msx_cart_fmpac_device::write_cart)
}
WRITE8_MEMBER(msx_cart_fmpac_device::write_ym2413)
void msx_cart_fmpac_device::write_ym2413(offs_t offset, uint8_t data)
{
if (m_opll_active)
{

View File

@ -19,14 +19,13 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
DECLARE_WRITE8_MEMBER(write_ym2413);
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
// device-level overrides
virtual void device_add_mconfig(machine_config &config) override;
@ -34,6 +33,8 @@ protected:
void restore_banks();
private:
void write_ym2413(offs_t offset, uint8_t data);
required_device<ym2413_device> m_ym2413;
uint8_t m_selected_bank;

View File

@ -38,7 +38,7 @@ void msx_cart_fs_sr022_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_fs_sr022_device::read_cart)
uint8_t msx_cart_fs_sr022_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@ -52,7 +52,7 @@ READ8_MEMBER(msx_cart_fs_sr022_device::read_cart)
}
WRITE8_MEMBER(msx_cart_fs_sr022_device::write_cart)
void msx_cart_fs_sr022_device::write_cart(offs_t offset, uint8_t data)
{
switch (offset)
{

View File

@ -18,8 +18,8 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides

View File

@ -19,8 +19,12 @@ msx_cart_halnote_device::msx_cart_halnote_device(const machine_config &mconfig,
void msx_cart_halnote_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_halnote_device::restore_banks), this));
void msx_cart_halnote_device::device_post_load()
{
restore_banks();
}
@ -84,7 +88,7 @@ void msx_cart_halnote_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_halnote_device::read_cart)
uint8_t msx_cart_halnote_device::read_cart(offs_t offset)
{
if (offset >= 0xc000)
{
@ -106,7 +110,7 @@ READ8_MEMBER(msx_cart_halnote_device::read_cart)
}
WRITE8_MEMBER(msx_cart_halnote_device::write_cart)
void msx_cart_halnote_device::write_cart(offs_t offset, uint8_t data)
{
if (offset < 0x4000)
{

View File

@ -18,13 +18,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();

View File

@ -19,8 +19,12 @@ msx_cart_hfox_device::msx_cart_hfox_device(const machine_config &mconfig, const
void msx_cart_hfox_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_hfox_device::restore_banks), this));
void msx_cart_hfox_device::device_post_load()
{
restore_banks();
}
@ -48,7 +52,7 @@ void msx_cart_hfox_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_hfox_device::read_cart)
uint8_t msx_cart_hfox_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@ -58,7 +62,7 @@ READ8_MEMBER(msx_cart_hfox_device::read_cart)
}
WRITE8_MEMBER(msx_cart_hfox_device::write_cart)
void msx_cart_hfox_device::write_cart(offs_t offset, uint8_t data)
{
switch (offset)
{

View File

@ -16,13 +16,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();

View File

@ -30,8 +30,12 @@ void msx_cart_holy_quran_device::device_start()
{
save_item(NAME(m_selected_bank));
save_item(NAME(m_decrypt));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_holy_quran_device::restore_banks), this));
void msx_cart_holy_quran_device::device_post_load()
{
restore_banks();
}
@ -64,7 +68,7 @@ void msx_cart_holy_quran_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_holy_quran_device::read_cart)
uint8_t msx_cart_holy_quran_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@ -88,7 +92,7 @@ READ8_MEMBER(msx_cart_holy_quran_device::read_cart)
}
WRITE8_MEMBER(msx_cart_holy_quran_device::write_cart)
void msx_cart_holy_quran_device::write_cart(offs_t offset, uint8_t data)
{
switch (offset)
{

View File

@ -18,13 +18,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();

View File

@ -35,8 +35,12 @@ msx_cart_konami_device::msx_cart_konami_device(const machine_config &mconfig, co
void msx_cart_konami_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_konami_device::restore_banks), this));
void msx_cart_konami_device::device_post_load()
{
restore_banks();
}
@ -84,13 +88,13 @@ void msx_cart_konami_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_konami_device::read_cart)
uint8_t msx_cart_konami_device::read_cart(offs_t offset)
{
return m_bank_base[offset >> 13][offset & 0x1fff];
}
WRITE8_MEMBER(msx_cart_konami_device::write_cart)
void msx_cart_konami_device::write_cart(offs_t offset, uint8_t data)
{
switch (offset & 0xe000)
{
@ -153,8 +157,12 @@ void msx_cart_konami_scc_device::device_start()
{
save_item(NAME(m_selected_bank));
save_item(NAME(m_scc_active));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_konami_scc_device::restore_banks), this));
void msx_cart_konami_scc_device::device_post_load()
{
restore_banks();
}
@ -203,8 +211,10 @@ void msx_cart_konami_scc_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_konami_scc_device::read_cart)
uint8_t msx_cart_konami_scc_device::read_cart(offs_t offset)
{
address_space &space = machine().dummy_space();
if ( m_scc_active && offset >= 0x9800 && offset < 0xa000 )
{
if (offset & 0x80)
@ -225,8 +235,10 @@ READ8_MEMBER(msx_cart_konami_scc_device::read_cart)
}
WRITE8_MEMBER(msx_cart_konami_scc_device::write_cart)
void msx_cart_konami_scc_device::write_cart(offs_t offset, uint8_t data)
{
address_space &space = machine().dummy_space();
switch (offset & 0xf800)
{
case 0x5000:
@ -311,8 +323,12 @@ msx_cart_gamemaster2_device::msx_cart_gamemaster2_device(const machine_config &m
void msx_cart_gamemaster2_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_gamemaster2_device::restore_banks), this));
void msx_cart_gamemaster2_device::device_post_load()
{
restore_banks();
}
@ -397,7 +413,7 @@ void msx_cart_gamemaster2_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_gamemaster2_device::read_cart)
uint8_t msx_cart_gamemaster2_device::read_cart(offs_t offset)
{
uint8_t bank = offset >> 13;
@ -431,7 +447,7 @@ READ8_MEMBER(msx_cart_gamemaster2_device::read_cart)
}
WRITE8_MEMBER(msx_cart_gamemaster2_device::write_cart)
void msx_cart_gamemaster2_device::write_cart(offs_t offset, uint8_t data)
{
switch (offset & 0xf000)
{
@ -499,7 +515,7 @@ void msx_cart_synthesizer_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_synthesizer_device::read_cart)
uint8_t msx_cart_synthesizer_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xc000 )
{
@ -509,7 +525,7 @@ READ8_MEMBER(msx_cart_synthesizer_device::read_cart)
}
WRITE8_MEMBER(msx_cart_synthesizer_device::write_cart)
void msx_cart_synthesizer_device::write_cart(offs_t offset, uint8_t data)
{
if ((offset & 0xc010) == 0x4000)
{
@ -561,8 +577,12 @@ void msx_cart_konami_sound_device::device_start()
save_item(NAME(m_scc_active));
save_item(NAME(m_sccplus_active));
save_item(NAME(m_ram_enabled));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_konami_sound_device::restore_banks), this));
void msx_cart_konami_sound_device::device_post_load()
{
restore_banks();
}
@ -620,8 +640,10 @@ void msx_cart_konami_sound_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_konami_sound_device::read_cart)
uint8_t msx_cart_konami_sound_device::read_cart(offs_t offset)
{
address_space &space = machine().dummy_space();
if ( m_scc_active && offset >= 0x9800 && offset < 0x9fe0 )
{
offset &= 0xff;
@ -668,8 +690,10 @@ READ8_MEMBER(msx_cart_konami_sound_device::read_cart)
}
WRITE8_MEMBER(msx_cart_konami_sound_device::write_cart)
void msx_cart_konami_sound_device::write_cart(offs_t offset, uint8_t data)
{
address_space &space = machine().dummy_space();
switch (offset & 0xe000)
{
case 0x4000:
@ -887,10 +911,9 @@ void msx_cart_keyboard_master_device::device_add_mconfig(machine_config &config)
void msx_cart_keyboard_master_device::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_write_handler(0x00, 0x00, write8_delegate(FUNC(vlm5030_device::data_w), m_vlm5030.target()));
space.install_write_handler(0x20, 0x20, write8_delegate(FUNC(msx_cart_keyboard_master_device::io_20_w), this));
space.install_read_handler(0x00, 0x00, read8_delegate(FUNC(msx_cart_keyboard_master_device::io_00_r), this));
io_space().install_write_handler(0x00, 0x00, write8_delegate(FUNC(vlm5030_device::data_w), m_vlm5030.target()));
io_space().install_write_handler(0x20, 0x20, write8smo_delegate(FUNC(msx_cart_keyboard_master_device::io_20_w), this));
io_space().install_read_handler(0x00, 0x00, read8smo_delegate(FUNC(msx_cart_keyboard_master_device::io_00_r), this));
}
@ -903,7 +926,7 @@ void msx_cart_keyboard_master_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_keyboard_master_device::read_cart)
uint8_t msx_cart_keyboard_master_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0x8000)
{
@ -913,13 +936,13 @@ READ8_MEMBER(msx_cart_keyboard_master_device::read_cart)
}
READ8_MEMBER(msx_cart_keyboard_master_device::read_vlm)
uint8_t msx_cart_keyboard_master_device::read_vlm(offs_t offset)
{
return m_rom_vlm5030[offset];
}
WRITE8_MEMBER(msx_cart_keyboard_master_device::io_20_w)
void msx_cart_keyboard_master_device::io_20_w(uint8_t data)
{
m_vlm5030->rst((data & 0x01) ? 1 : 0);
m_vlm5030->vcu((data & 0x04) ? 1 : 0);
@ -927,7 +950,7 @@ WRITE8_MEMBER(msx_cart_keyboard_master_device::io_20_w)
}
READ8_MEMBER(msx_cart_keyboard_master_device::io_00_r)
uint8_t msx_cart_keyboard_master_device::io_00_r()
{
return m_vlm5030->bsy() ? 0x10 : 0x00;
}

View File

@ -25,13 +25,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();
@ -49,13 +50,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
virtual void device_add_mconfig(machine_config &config) override;
@ -78,13 +80,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();
@ -103,8 +106,8 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
@ -123,8 +126,8 @@ class msx_cart_konami_sound_device : public device_t, public msx_cart_interface
public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
msx_cart_konami_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@ -132,6 +135,7 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
virtual void device_add_mconfig(machine_config &config) override;
@ -186,14 +190,14 @@ protected:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
private:
required_device<vlm5030_device> m_vlm5030;
DECLARE_READ8_MEMBER(read_vlm);
DECLARE_WRITE8_MEMBER(io_20_w);
DECLARE_READ8_MEMBER(io_00_r);
uint8_t read_vlm(offs_t offset);
void io_20_w(uint8_t data);
uint8_t io_00_r();
void vlm_map(address_map &map);
};

View File

@ -21,8 +21,12 @@ msx_cart_korean_80in1_device::msx_cart_korean_80in1_device(const machine_config
void msx_cart_korean_80in1_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_korean_80in1_device::restore_banks), this));
void msx_cart_korean_80in1_device::device_post_load()
{
restore_banks();
}
@ -72,7 +76,7 @@ void msx_cart_korean_80in1_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_korean_80in1_device::read_cart)
uint8_t msx_cart_korean_80in1_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@ -83,7 +87,7 @@ READ8_MEMBER(msx_cart_korean_80in1_device::read_cart)
}
WRITE8_MEMBER(msx_cart_korean_80in1_device::write_cart)
void msx_cart_korean_80in1_device::write_cart(offs_t offset, uint8_t data)
{
if (offset >= 0x4000 && offset < 0x4004)
{
@ -112,11 +116,14 @@ void msx_cart_korean_90in1_device::device_start()
{
save_item(NAME(m_selected_bank));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_korean_90in1_device::restore_banks), this));
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_write_handler(0x77, 0x77, write8_delegate(FUNC(msx_cart_korean_90in1_device::banking), this));
io_space().install_write_handler(0x77, 0x77, write8smo_delegate(FUNC(msx_cart_korean_90in1_device::banking), this));
}
void msx_cart_korean_90in1_device::device_post_load()
{
restore_banks();
}
@ -181,7 +188,7 @@ void msx_cart_korean_90in1_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_korean_90in1_device::read_cart)
uint8_t msx_cart_korean_90in1_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@ -192,7 +199,7 @@ READ8_MEMBER(msx_cart_korean_90in1_device::read_cart)
}
WRITE8_MEMBER(msx_cart_korean_90in1_device::banking)
void msx_cart_korean_90in1_device::banking(uint8_t data)
{
m_selected_bank = data;
restore_banks();
@ -215,8 +222,12 @@ msx_cart_korean_126in1_device::msx_cart_korean_126in1_device(const machine_confi
void msx_cart_korean_126in1_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_korean_126in1_device::restore_banks), this));
void msx_cart_korean_126in1_device::device_post_load()
{
restore_banks();
}
@ -266,7 +277,7 @@ void msx_cart_korean_126in1_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_korean_126in1_device::read_cart)
uint8_t msx_cart_korean_126in1_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@ -277,7 +288,7 @@ READ8_MEMBER(msx_cart_korean_126in1_device::read_cart)
}
WRITE8_MEMBER(msx_cart_korean_126in1_device::write_cart)
void msx_cart_korean_126in1_device::write_cart(offs_t offset, uint8_t data)
{
if (offset >= 0x4000 && offset < 0x4002)
{

View File

@ -20,13 +20,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
private:
void restore_banks();
@ -45,16 +46,17 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
DECLARE_WRITE8_MEMBER(banking);
virtual uint8_t read_cart(offs_t offset) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
private:
void banking(uint8_t data);
void restore_banks();
uint8_t m_bank_mask;
@ -70,13 +72,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
private:
void restore_banks();

View File

@ -40,8 +40,12 @@ void msx_cart_majutsushi_device::device_add_mconfig(machine_config &config)
void msx_cart_majutsushi_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_majutsushi_device::restore_banks), this));
void msx_cart_majutsushi_device::device_post_load()
{
restore_banks();
}
@ -78,13 +82,13 @@ void msx_cart_majutsushi_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_majutsushi_device::read_cart)
uint8_t msx_cart_majutsushi_device::read_cart(offs_t offset)
{
return m_bank_base[offset >> 13][offset & 0x1fff];
}
WRITE8_MEMBER(msx_cart_majutsushi_device::write_cart)
void msx_cart_majutsushi_device::write_cart(offs_t offset, uint8_t data)
{
switch (offset & 0xe000)
{

View File

@ -19,13 +19,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
virtual void device_add_mconfig(machine_config &config) override;

View File

@ -67,13 +67,10 @@ const tiny_rom_entry *msx_cart_moonsound_device::device_rom_region() const
void msx_cart_moonsound_device::device_start()
{
m_out_irq_cb.resolve_safe();
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_readwrite_handler(0x7e, 0x7f, read8_delegate(FUNC(msx_cart_moonsound_device::read_ymf278b_pcm), this), write8_delegate(FUNC(msx_cart_moonsound_device::write_ymf278b_pcm), this));
space.install_readwrite_handler(0xc4, 0xc7, read8_delegate(FUNC(msx_cart_moonsound_device::read_ymf278b_fm), this), write8_delegate(FUNC(msx_cart_moonsound_device::write_ymf278b_fm), this));
space.install_read_handler(0xc0, 0xc0, read8_delegate(FUNC(msx_cart_moonsound_device::read_c0), this));
io_space().install_readwrite_handler(0x7e, 0x7f, read8sm_delegate(FUNC(msx_cart_moonsound_device::read_ymf278b_pcm), this), write8sm_delegate(FUNC(msx_cart_moonsound_device::write_ymf278b_pcm), this));
io_space().install_readwrite_handler(0xc4, 0xc7, read8sm_delegate(FUNC(msx_cart_moonsound_device::read_ymf278b_fm), this), write8sm_delegate(FUNC(msx_cart_moonsound_device::write_ymf278b_fm), this));
io_space().install_read_handler(0xc0, 0xc0, read8smo_delegate(FUNC(msx_cart_moonsound_device::read_c0), this));
}
@ -85,32 +82,32 @@ void msx_cart_moonsound_device::device_reset()
WRITE_LINE_MEMBER(msx_cart_moonsound_device::irq_w)
{
LOG("moonsound: irq state %d\n", state);
m_out_irq_cb(state);
irq_out(state);
}
WRITE8_MEMBER(msx_cart_moonsound_device::write_ymf278b_fm)
void msx_cart_moonsound_device::write_ymf278b_fm(offs_t offset, uint8_t data)
{
LOG("moonsound: write 0x%02x, data 0x%02x\n", 0xc4 + offset, data);
m_ymf278b->write(offset, data);
}
READ8_MEMBER(msx_cart_moonsound_device::read_ymf278b_fm)
uint8_t msx_cart_moonsound_device::read_ymf278b_fm(offs_t offset)
{
LOG("moonsound: read 0x%02x\n", 0xc4 + offset);
return m_ymf278b->read(offset);
}
WRITE8_MEMBER(msx_cart_moonsound_device::write_ymf278b_pcm)
void msx_cart_moonsound_device::write_ymf278b_pcm(offs_t offset, uint8_t data)
{
LOG("moonsound: write 0x%02x, data 0x%02x\n", 0x7e + offset, data);
m_ymf278b->write(4 + offset, data);
}
READ8_MEMBER(msx_cart_moonsound_device::read_ymf278b_pcm)
uint8_t msx_cart_moonsound_device::read_ymf278b_pcm(offs_t offset)
{
LOG("moonsound: read 0x%02x\n", 0x7e + offset);
return m_ymf278b->read(4 + offset);
@ -118,7 +115,7 @@ READ8_MEMBER(msx_cart_moonsound_device::read_ymf278b_pcm)
// For detecting presence of moonsound cartridge
READ8_MEMBER(msx_cart_moonsound_device::read_c0)
uint8_t msx_cart_moonsound_device::read_c0()
{
LOG("moonsound: read 0xc0\n");
return 0x00;

View File

@ -27,11 +27,11 @@ protected:
private:
DECLARE_WRITE_LINE_MEMBER(irq_w);
DECLARE_WRITE8_MEMBER(write_ymf278b_fm);
DECLARE_READ8_MEMBER(read_ymf278b_fm);
DECLARE_WRITE8_MEMBER(write_ymf278b_pcm);
DECLARE_READ8_MEMBER(read_ymf278b_pcm);
DECLARE_READ8_MEMBER(read_c0);
void write_ymf278b_fm(offs_t offset, uint8_t data);
uint8_t read_ymf278b_fm(offs_t offset);
void write_ymf278b_pcm(offs_t offset, uint8_t data);
uint8_t read_ymf278b_pcm(offs_t offset);
uint8_t read_c0();
void ymf278b_map(address_map &map);

View File

@ -96,9 +96,8 @@ void msx_cart_msx_audio_hxmu900_device::device_add_mconfig(machine_config &confi
void msx_cart_msx_audio_hxmu900_device::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_write_handler(0xc0, 0xc1, write8sm_delegate(FUNC(y8950_device::write), m_y8950.target()));
space.install_read_handler(0xc0, 0xc1, read8sm_delegate(FUNC(y8950_device::read), m_y8950.target()));
io_space().install_write_handler(0xc0, 0xc1, write8sm_delegate(FUNC(y8950_device::write), m_y8950.target()));
io_space().install_read_handler(0xc0, 0xc1, read8sm_delegate(FUNC(y8950_device::read), m_y8950.target()));
}
@ -111,7 +110,7 @@ void msx_cart_msx_audio_hxmu900_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_msx_audio_hxmu900_device::read_cart)
uint8_t msx_cart_msx_audio_hxmu900_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xC000)
{
@ -201,11 +200,10 @@ WRITE_LINE_MEMBER(msx_cart_msx_audio_nms1205_device::midi_in)
void msx_cart_msx_audio_nms1205_device::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_write_handler(0xc0, 0xc1, write8sm_delegate(FUNC(y8950_device::write), m_y8950.target()));
space.install_read_handler(0xc0, 0xc1, read8sm_delegate(FUNC(y8950_device::read), m_y8950.target()));
space.install_write_handler(0x00, 0x01, write8sm_delegate(FUNC(acia6850_device::write), m_acia6850.target()));
space.install_read_handler(0x04, 0x05, read8sm_delegate(FUNC(acia6850_device::read), m_acia6850.target()));
io_space().install_write_handler(0xc0, 0xc1, write8sm_delegate(FUNC(y8950_device::write), m_y8950.target()));
io_space().install_read_handler(0xc0, 0xc1, read8sm_delegate(FUNC(y8950_device::read), m_y8950.target()));
io_space().install_write_handler(0x00, 0x01, write8sm_delegate(FUNC(acia6850_device::write), m_acia6850.target()));
io_space().install_read_handler(0x04, 0x05, read8sm_delegate(FUNC(acia6850_device::read), m_acia6850.target()));
}
@ -218,7 +216,7 @@ void msx_cart_msx_audio_nms1205_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_msx_audio_nms1205_device::read_cart)
uint8_t msx_cart_msx_audio_nms1205_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xC000)
{
@ -289,9 +287,8 @@ const tiny_rom_entry *msx_cart_msx_audio_fsca1_device::device_rom_region() const
void msx_cart_msx_audio_fsca1_device::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_write_handler(0xc0, 0xc3, write8_delegate(FUNC(msx_cart_msx_audio_fsca1_device::write_y8950), this));
space.install_read_handler(0xc0, 0xc3, read8_delegate(FUNC(msx_cart_msx_audio_fsca1_device::read_y8950), this));
io_space().install_write_handler(0xc0, 0xc3, write8sm_delegate(FUNC(msx_cart_msx_audio_fsca1_device::write_y8950), this));
io_space().install_read_handler(0xc0, 0xc3, read8sm_delegate(FUNC(msx_cart_msx_audio_fsca1_device::read_y8950), this));
}
@ -304,7 +301,7 @@ void msx_cart_msx_audio_fsca1_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_msx_audio_fsca1_device::read_cart)
uint8_t msx_cart_msx_audio_fsca1_device::read_cart(offs_t offset)
{
if (m_7ffe == 0 && (offset & 0xB000) == 0x3000)
{
@ -314,7 +311,7 @@ READ8_MEMBER(msx_cart_msx_audio_fsca1_device::read_cart)
}
WRITE8_MEMBER(msx_cart_msx_audio_fsca1_device::write_cart)
void msx_cart_msx_audio_fsca1_device::write_cart(offs_t offset, uint8_t data)
{
if (offset == 0x7ffe)
{
@ -338,7 +335,7 @@ WRITE8_MEMBER(msx_cart_msx_audio_fsca1_device::write_cart)
}
WRITE8_MEMBER(msx_cart_msx_audio_fsca1_device::write_y8950)
void msx_cart_msx_audio_fsca1_device::write_y8950(offs_t offset, uint8_t data)
{
if (offset & 2)
{
@ -357,7 +354,7 @@ WRITE8_MEMBER(msx_cart_msx_audio_fsca1_device::write_y8950)
}
READ8_MEMBER(msx_cart_msx_audio_fsca1_device::read_y8950)
uint8_t msx_cart_msx_audio_fsca1_device::read_y8950(offs_t offset)
{
if (offset & 2)
{
@ -370,13 +367,13 @@ READ8_MEMBER(msx_cart_msx_audio_fsca1_device::read_y8950)
}
WRITE8_MEMBER(msx_cart_msx_audio_fsca1_device::y8950_io_w)
void msx_cart_msx_audio_fsca1_device::y8950_io_w(uint8_t data)
{
logerror("msx_fsca1::y8950_io_w: %02x\n", data);
}
READ8_MEMBER(msx_cart_msx_audio_fsca1_device::y8950_io_r)
uint8_t msx_cart_msx_audio_fsca1_device::y8950_io_r()
{
return m_io_config->read();
}

View File

@ -23,7 +23,7 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
protected:
virtual void device_start() override;
@ -44,7 +44,7 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
protected:
virtual void device_start() override;
@ -71,8 +71,8 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
virtual void device_start() override;
@ -82,12 +82,12 @@ protected:
virtual ioport_constructor device_input_ports() const override;
virtual const tiny_rom_entry *device_rom_region() const override;
DECLARE_WRITE8_MEMBER(write_y8950);
DECLARE_READ8_MEMBER(read_y8950);
private:
DECLARE_WRITE8_MEMBER(y8950_io_w);
DECLARE_READ8_MEMBER(y8950_io_r);
void write_y8950(offs_t offset, uint8_t data);
uint8_t read_y8950(offs_t offset);
void y8950_io_w(uint8_t data);
uint8_t y8950_io_r();
required_device<y8950_device> m_y8950;
required_ioport m_io_config;

View File

@ -21,20 +21,20 @@ void msx_audio_kbdc_port_device::device_start()
}
WRITE8_MEMBER(msx_audio_kbdc_port_device::write)
void msx_audio_kbdc_port_device::write(uint8_t data)
{
if (m_keyboard)
{
m_keyboard->write(space, offset, data);
m_keyboard->write(data);
}
}
READ8_MEMBER(msx_audio_kbdc_port_device::read)
uint8_t msx_audio_kbdc_port_device::read()
{
if (m_keyboard)
{
return m_keyboard->read(space, offset);
return m_keyboard->read();
}
return 0xff;
}
@ -57,7 +57,7 @@ public:
virtual ioport_constructor device_input_ports() const override;
virtual DECLARE_READ8_MEMBER(read) override
virtual uint8_t read() override
{
uint8_t result = 0xff;
@ -71,7 +71,7 @@ public:
return result;
}
virtual DECLARE_WRITE8_MEMBER(write) override
virtual void write(uint8_t data) override
{
m_row = data;
}
@ -187,7 +187,7 @@ public:
virtual ioport_constructor device_input_ports() const override;
virtual DECLARE_READ8_MEMBER(read) override
virtual uint8_t read() override
{
uint8_t result = 0xff;
@ -201,7 +201,7 @@ public:
return result;
}
virtual DECLARE_WRITE8_MEMBER(write) override
virtual void write(uint8_t data) override
{
logerror("msx_nms1160::write %02x\n", data);
m_row = data;

View File

@ -10,9 +10,8 @@ DECLARE_DEVICE_TYPE(MSX_AUDIO_KBDC_PORT, msx_audio_kbdc_port_device)
class msx_audio_kb_port_interface : public device_slot_card_interface
{
public:
virtual DECLARE_READ8_MEMBER(read) { return 0xff; }
virtual DECLARE_WRITE8_MEMBER(write) { }
virtual uint8_t read() { return 0xff; }
virtual void write(uint8_t data) { }
protected:
// construction/destruction
@ -39,8 +38,8 @@ public:
virtual void device_start() override;
// Physical connection simply consists of 8 input and 8 output lines split across 2 connectors
DECLARE_WRITE8_MEMBER(write);
DECLARE_READ8_MEMBER(read);
void write(uint8_t data);
uint8_t read();
protected:

View File

@ -18,8 +18,12 @@ msx_cart_msxdos2_device::msx_cart_msxdos2_device(const machine_config &mconfig,
void msx_cart_msxdos2_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_msxdos2_device::restore_banks), this));
void msx_cart_msxdos2_device::device_post_load()
{
restore_banks();
}
@ -46,7 +50,7 @@ void msx_cart_msxdos2_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_msxdos2_device::read_cart)
uint8_t msx_cart_msxdos2_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0x8000)
{
@ -57,7 +61,7 @@ READ8_MEMBER(msx_cart_msxdos2_device::read_cart)
}
WRITE8_MEMBER(msx_cart_msxdos2_device::write_cart)
void msx_cart_msxdos2_device::write_cart(offs_t offset, uint8_t data)
{
if (offset == 0x6000)
{

View File

@ -18,13 +18,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();

View File

@ -84,7 +84,7 @@ void msx_cart_nomapper_device::initialize_cartridge()
m_end_address = std::min<uint32_t>(m_start_address + size, 0x10000);
}
READ8_MEMBER(msx_cart_nomapper_device::read_cart)
uint8_t msx_cart_nomapper_device::read_cart(offs_t offset)
{
if ( offset >= m_start_address && offset < m_end_address )
{

View File

@ -21,7 +21,7 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
private:
uint32_t m_start_address;

View File

@ -21,8 +21,12 @@ msx_cart_rtype_device::msx_cart_rtype_device(const machine_config &mconfig, cons
void msx_cart_rtype_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_rtype_device::restore_banks), this));
void msx_cart_rtype_device::device_post_load()
{
restore_banks();
}
@ -54,7 +58,7 @@ void msx_cart_rtype_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_rtype_device::read_cart)
uint8_t msx_cart_rtype_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@ -64,7 +68,7 @@ READ8_MEMBER(msx_cart_rtype_device::read_cart)
}
WRITE8_MEMBER(msx_cart_rtype_device::write_cart)
void msx_cart_rtype_device::write_cart(offs_t offset, uint8_t data)
{
if (offset >= 0x7000 && offset < 0x8000)
{

View File

@ -18,13 +18,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();

View File

@ -19,8 +19,12 @@ msx_cart_super_swangi_device::msx_cart_super_swangi_device(const machine_config
void msx_cart_super_swangi_device::device_start()
{
save_item(NAME(m_selected_bank));
}
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_super_swangi_device::restore_banks), this));
void msx_cart_super_swangi_device::device_post_load()
{
restore_banks();
}
@ -48,7 +52,7 @@ void msx_cart_super_swangi_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_super_swangi_device::read_cart)
uint8_t msx_cart_super_swangi_device::read_cart(offs_t offset)
{
if (offset >= 0x4000 && offset < 0xc000)
{
@ -58,7 +62,7 @@ READ8_MEMBER(msx_cart_super_swangi_device::read_cart)
}
WRITE8_MEMBER(msx_cart_super_swangi_device::write_cart)
void msx_cart_super_swangi_device::write_cart(offs_t offset, uint8_t data)
{
if (offset == 0x8000)
{

View File

@ -18,13 +18,14 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_post_load() override;
void restore_banks();

View File

@ -19,11 +19,14 @@ void msx_cart_superloderunner_device::device_start()
{
save_item(NAME(m_selected_bank));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_superloderunner_device::restore_banks), this));
// Install evil memory write handler
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_PROGRAM);
space.install_write_handler(0x0000, 0x0000, write8_delegate(FUNC(msx_cart_superloderunner_device::banking), this));
memory_space().install_write_handler(0x0000, 0x0000, write8smo_delegate(FUNC(msx_cart_superloderunner_device::banking), this));
}
void msx_cart_superloderunner_device::device_post_load()
{
restore_banks();
}
@ -44,7 +47,7 @@ void msx_cart_superloderunner_device::initialize_cartridge()
}
READ8_MEMBER(msx_cart_superloderunner_device::read_cart)
uint8_t msx_cart_superloderunner_device::read_cart(offs_t offset)
{
if (offset >= 0x8000 && offset < 0xc000)
{
@ -55,7 +58,7 @@ READ8_MEMBER(msx_cart_superloderunner_device::read_cart)
}
WRITE8_MEMBER(msx_cart_superloderunner_device::banking)
void msx_cart_superloderunner_device::banking(uint8_t data)
{
m_selected_bank = data;
restore_banks();

View File

@ -18,17 +18,18 @@ public:
virtual void initialize_cartridge() override;
virtual DECLARE_READ8_MEMBER(read_cart) override;
DECLARE_WRITE8_MEMBER(banking);
virtual uint8_t read_cart(offs_t offset) override;
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_post_load() override;
void restore_banks();
private:
void banking(uint8_t data);
uint8_t m_selected_bank;
uint8_t *m_bank_base;
};

View File

@ -131,16 +131,16 @@ void msx_cart_sfg_device::check_irq()
{
if (m_ym2151_irq_state != CLEAR_LINE || m_ym2148_irq_state != CLEAR_LINE)
{
m_out_irq_cb(ASSERT_LINE);
irq_out(ASSERT_LINE);
}
else
{
m_out_irq_cb(CLEAR_LINE);
irq_out(CLEAR_LINE);
}
}
READ8_MEMBER(msx_cart_sfg_device::read_cart)
uint8_t msx_cart_sfg_device::read_cart(offs_t offset)
{
switch (offset & 0x3fff)
{
@ -155,7 +155,7 @@ READ8_MEMBER(msx_cart_sfg_device::read_cart)
case 0x3ff6: // YM-2148 MIDI UART status register
// ------x- - 1 = received a byte/receive buffer full?
// -------x - 1 = ready to send next byte/send buffer empty?
return m_ym2148->read(space, offset & 7);
return m_ym2148->read(machine().dummy_space(), offset & 7);
}
if (offset < 0x8000)
@ -167,7 +167,7 @@ READ8_MEMBER(msx_cart_sfg_device::read_cart)
}
WRITE8_MEMBER(msx_cart_sfg_device::write_cart)
void msx_cart_sfg_device::write_cart(offs_t offset, uint8_t data)
{
switch (offset & 0x3fff)
{
@ -191,7 +191,7 @@ WRITE8_MEMBER(msx_cart_sfg_device::write_cart)
// x------- - 1 = reset
// -----x-- - 1 = enable receiving / sending midi data
// -------x - 1 = enable receiving / sending midi data
m_ym2148->write(space, offset & 7, data);
m_ym2148->write(machine().dummy_space(), offset & 7, data);
break;
default:

View File

@ -18,8 +18,9 @@ DECLARE_DEVICE_TYPE(MSX_CART_SFG05, msx_cart_sfg05_device)
class msx_cart_sfg_device : public device_t, public msx_cart_interface
{
public:
virtual DECLARE_READ8_MEMBER(read_cart) override;
virtual DECLARE_WRITE8_MEMBER(write_cart) override;
virtual uint8_t read_cart(offs_t offset) override;
virtual void write_cart(offs_t offset, uint8_t data) override;
protected:
msx_cart_sfg_device(const machine_config &mconfig, const device_type type, const char *tag, device_t *owner, uint32_t clock);

View File

@ -25,17 +25,17 @@ void msx_slot_bunsetsu_device::device_reset()
}
READ8_MEMBER(msx_slot_bunsetsu_device::read)
uint8_t msx_slot_bunsetsu_device::read(offs_t offset)
{
if (offset == 0xbfff)
{
return m_bunsetsu_region[m_bunsetsu_address++ & 0x1ffff];
}
return msx_slot_rom_device::read(space, offset);
return msx_slot_rom_device::read(offset);
}
WRITE8_MEMBER(msx_slot_bunsetsu_device::write)
void msx_slot_bunsetsu_device::write(offs_t offset, uint8_t data)
{
switch (offset)
{

View File

@ -12,11 +12,6 @@
DECLARE_DEVICE_TYPE(MSX_SLOT_BUNSETSU, msx_slot_bunsetsu_device)
#define MCFG_MSX_SLOT_BUNSETSU_ADD(_tag, _startpage, _numpages, _region, _offset, _bunsetsu_region_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_BUNSETSU, _startpage, _numpages) \
downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \
downcast<msx_slot_bunsetsu_device &>(*device).set_bunsetsu_region_tag(_bunsetsu_region_tag);
class msx_slot_bunsetsu_device : public msx_slot_rom_device
{
public:
@ -25,8 +20,8 @@ public:
// configuration helpers
void set_bunsetsu_region_tag(const char *tag) { m_bunsetsu_region.set_tag(tag); }
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
protected:
virtual void device_reset() override;

View File

@ -43,7 +43,7 @@ msx_slot_cartridge_device::msx_slot_cartridge_device(const machine_config &mconf
: device_t(mconfig, type, tag, owner, clock)
, device_image_interface(mconfig, *this)
, device_slot_interface(mconfig, *this)
, msx_internal_slot_interface()
, msx_internal_slot_interface(mconfig, *this)
, m_irq_handler(*this)
, m_cartridge(nullptr)
{
@ -90,10 +90,17 @@ static const char *msx_cart_get_slot_option(int type)
}
void msx_slot_cartridge_device::device_start()
void msx_slot_cartridge_device::device_resolve_objects()
{
m_irq_handler.resolve_safe();
m_cartridge = dynamic_cast<msx_cart_interface *>(get_card_device());
if (m_cartridge)
m_cartridge->m_exp = this;
}
void msx_slot_cartridge_device::device_start()
{
}
@ -169,7 +176,7 @@ image_init_result msx_slot_cartridge_device::call_load()
}
}
m_cartridge->set_out_irq_cb(DEVCB_WRITELINE(*this, msx_slot_cartridge_device, irq_out));
m_cartridge->m_exp = this;
m_cartridge->initialize_cartridge();
if (m_cartridge->get_sram_size() > 0)
@ -331,21 +338,21 @@ std::string msx_slot_cartridge_device::get_default_card_software(get_default_car
}
READ8_MEMBER(msx_slot_cartridge_device::read)
uint8_t msx_slot_cartridge_device::read(offs_t offset)
{
if ( m_cartridge )
{
return m_cartridge->read_cart(space, offset);
return m_cartridge->read_cart(offset);
}
return 0xFF;
}
WRITE8_MEMBER(msx_slot_cartridge_device::write)
void msx_slot_cartridge_device::write(offs_t offset, uint8_t data)
{
if ( m_cartridge )
{
m_cartridge->write_cart(space, offset, data);
m_cartridge->write_cart(offset, data);
}
}
@ -360,8 +367,4 @@ msx_slot_yamaha_expansion_device::msx_slot_yamaha_expansion_device(const machine
void msx_slot_yamaha_expansion_device::device_start()
{
m_irq_handler.resolve_safe();
m_cartridge = dynamic_cast<msx_cart_interface *>(get_card_device());
if (m_cartridge)
m_cartridge->set_out_irq_cb(DEVCB_WRITELINE(*this, msx_slot_cartridge_device, irq_out));
}

View File

@ -14,18 +14,6 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_CARTRIDGE, msx_slot_cartridge_device)
DECLARE_DEVICE_TYPE(MSX_SLOT_YAMAHA_EXPANSION, msx_slot_yamaha_expansion_device)
#define MCFG_MSX_SLOT_CARTRIDGE_ADD(_tag, _devcb) \
MCFG_DEVICE_ADD(_tag, MSX_SLOT_CARTRIDGE, 0) \
MCFG_DEVICE_SLOT_INTERFACE(msx_cart, nullptr, false) \
downcast<msx_slot_cartridge_device &>(*device).set_irq_handler(DEVCB_##_devcb);
#define MCFG_MSX_SLOT_YAMAHA_EXPANSION_ADD(_tag, _devcb, _default) \
MCFG_DEVICE_ADD(_tag, MSX_SLOT_YAMAHA_EXPANSION, 0) \
MCFG_DEVICE_SLOT_INTERFACE(msx_yamaha_60pin, _default, false) \
downcast<msx_slot_cartridge_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class msx_slot_cartridge_device : public device_t
, public device_image_interface
, public device_slot_interface
@ -35,8 +23,8 @@ public:
// construction/destruction
msx_slot_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration helpers
template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
// configuration helpers
auto irq_handler() { return m_irq_handler.bind(); }
// image-level overrides
virtual image_init_result call_load() override;
@ -57,8 +45,8 @@ public:
virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override;
// msx_internal_slot-level overrides
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
DECLARE_WRITE_LINE_MEMBER(irq_out);
@ -66,6 +54,7 @@ protected:
msx_slot_cartridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_resolve_objects() override;
virtual void device_start() override;
devcb_write_line m_irq_handler;

View File

@ -137,8 +137,6 @@ void msx_slot_disk1_device::device_start()
save_item(NAME(m_side_control));
save_item(NAME(m_control));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_slot_disk1_device::post_load), this));
}
@ -148,7 +146,7 @@ void msx_slot_disk1_device::device_reset()
}
void msx_slot_disk1_device::post_load()
void msx_slot_disk1_device::device_post_load()
{
uint8_t data = m_control;
@ -207,7 +205,7 @@ void msx_slot_disk1_device::set_control(uint8_t data)
}
READ8_MEMBER(msx_slot_disk1_device::read)
uint8_t msx_slot_disk1_device::read(offs_t offset)
{
switch (offset)
{
@ -240,11 +238,11 @@ READ8_MEMBER(msx_slot_disk1_device::read)
return 0x3f | (m_fdc->intrq_r() ? 0 : 0x40) | (m_fdc->drq_r() ? 0 : 0x80);
}
return msx_slot_rom_device::read(space, offset);
return msx_slot_rom_device::read(offset);
}
WRITE8_MEMBER(msx_slot_disk1_device::write)
void msx_slot_disk1_device::write(offs_t offset, uint8_t data)
{
switch (offset)
{
@ -298,8 +296,6 @@ void msx_slot_disk2_device::device_start()
msx_slot_wd_disk_device::device_start();
save_item(NAME(m_control));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_slot_disk2_device::post_load), this));
}
@ -309,7 +305,7 @@ void msx_slot_disk2_device::device_reset()
}
void msx_slot_disk2_device::post_load()
void msx_slot_disk2_device::device_post_load()
{
uint8_t data = m_control;
@ -356,7 +352,7 @@ void msx_slot_disk2_device::set_control(uint8_t data)
}
READ8_MEMBER(msx_slot_disk2_device::read)
uint8_t msx_slot_disk2_device::read(offs_t offset)
{
switch (offset)
{
@ -381,11 +377,11 @@ READ8_MEMBER(msx_slot_disk2_device::read)
return 0x3f | (m_fdc->drq_r() ? 0 : 0x40) | (m_fdc->intrq_r() ? 0x80 : 0);
}
return msx_slot_rom_device::read(space, offset);
return msx_slot_rom_device::read(offset);
}
WRITE8_MEMBER(msx_slot_disk2_device::write)
void msx_slot_disk2_device::write(offs_t offset, uint8_t data)
{
switch (offset)
{
@ -431,8 +427,10 @@ msx_slot_disk3_device::msx_slot_disk3_device(const machine_config &mconfig, cons
}
WRITE8_MEMBER(msx_slot_disk3_device::write)
void msx_slot_disk3_device::write(offs_t offset, uint8_t data)
{
address_space &space = machine().dummy_space();
switch (offset)
{
case 0x7ff8: // CR0 : 0 - 0 - MEN1 - MEN0 - 0 - -FRST - 0 - DSA
@ -454,8 +452,10 @@ WRITE8_MEMBER(msx_slot_disk3_device::write)
}
READ8_MEMBER(msx_slot_disk3_device::read)
uint8_t msx_slot_disk3_device::read(offs_t offset)
{
address_space &space = machine().dummy_space();
switch (offset)
{
case 0x7ffa: // Status Register
@ -464,7 +464,7 @@ READ8_MEMBER(msx_slot_disk3_device::read)
return m_fdc->fifo_r(space, 5);
}
return msx_slot_rom_device::read(space, offset);
return msx_slot_rom_device::read(offset);
}
@ -477,8 +477,10 @@ msx_slot_disk4_device::msx_slot_disk4_device(const machine_config &mconfig, cons
}
WRITE8_MEMBER(msx_slot_disk4_device::write)
void msx_slot_disk4_device::write(offs_t offset, uint8_t data)
{
address_space &space = machine().dummy_space();
switch (offset)
{
case 0x7ff1: // FDD : x - x - MC1 - MC0 - x - x - x - x
@ -503,8 +505,10 @@ WRITE8_MEMBER(msx_slot_disk4_device::write)
}
READ8_MEMBER(msx_slot_disk4_device::read)
uint8_t msx_slot_disk4_device::read(offs_t offset)
{
address_space &space = machine().dummy_space();
switch (offset)
{
case 0x7ff1: // FDD : x - x - MC1 - MC0 - x - x - x - x
@ -517,7 +521,7 @@ READ8_MEMBER(msx_slot_disk4_device::read)
return m_fdc->fifo_r(space, 5);
}
return msx_slot_rom_device::read(space, offset);
return msx_slot_rom_device::read(offset);
}
@ -536,12 +540,9 @@ void msx_slot_disk5_device::device_start()
save_item(NAME(m_control));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_slot_disk5_device::post_load), this));
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_write_handler(0xd0, 0xd4, write8_delegate(FUNC(msx_slot_disk5_device::io_write), this));
space.install_read_handler(0xd0, 0xd4, read8_delegate(FUNC(msx_slot_disk5_device::io_read), this));
io_space().install_write_handler(0xd0, 0xd4, write8sm_delegate(FUNC(msx_slot_disk5_device::io_write), this));
io_space().install_read_handler(0xd0, 0xd4, read8sm_delegate(FUNC(msx_slot_disk5_device::io_read), this));
}
@ -551,7 +552,7 @@ void msx_slot_disk5_device::device_reset()
}
void msx_slot_disk5_device::post_load()
void msx_slot_disk5_device::device_post_load()
{
set_control(m_control);
}
@ -594,7 +595,7 @@ void msx_slot_disk5_device::set_control(uint8_t control)
}
READ8_MEMBER(msx_slot_disk5_device::io_read)
uint8_t msx_slot_disk5_device::io_read(offs_t offset)
{
switch (offset)
{
@ -618,7 +619,7 @@ READ8_MEMBER(msx_slot_disk5_device::io_read)
}
WRITE8_MEMBER(msx_slot_disk5_device::io_write)
void msx_slot_disk5_device::io_write(offs_t offset, uint8_t data)
{
switch (offset)
{
@ -662,8 +663,6 @@ void msx_slot_disk6_device::device_start()
save_item(NAME(m_side_motor));
save_item(NAME(m_drive_select0));
save_item(NAME(m_drive_select1));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_slot_disk6_device::post_load), this));
}
@ -673,7 +672,7 @@ void msx_slot_disk6_device::device_reset()
}
void msx_slot_disk6_device::post_load()
void msx_slot_disk6_device::device_post_load()
{
select_drive();
}
@ -715,7 +714,7 @@ void msx_slot_disk6_device::set_side_motor()
}
READ8_MEMBER(msx_slot_disk6_device::read)
uint8_t msx_slot_disk6_device::read(offs_t offset)
{
switch (offset)
{
@ -757,11 +756,11 @@ READ8_MEMBER(msx_slot_disk6_device::read)
return 0x3f | (m_fdc->intrq_r() ? 0 : 0x40) | (m_fdc->drq_r() ? 0 : 0x80);
}
return msx_slot_rom_device::read(space, offset);
return msx_slot_rom_device::read(offset);
}
WRITE8_MEMBER(msx_slot_disk6_device::write)
void msx_slot_disk6_device::write(offs_t offset, uint8_t data)
{
switch (offset)
{

View File

@ -26,51 +26,6 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_DISK5, msx_slot_disk5_device)
DECLARE_DEVICE_TYPE(MSX_SLOT_DISK6, msx_slot_disk6_device)
#define MCFG_MSX_SLOT_DISK1_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK1, _startpage, _numpages) \
downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \
downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag);
#define MCFG_MSX_SLOT_DISK2_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK2, _startpage, _numpages) \
downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \
downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag);
#define MCFG_MSX_SLOT_DISK3_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK3, _startpage, _numpages) \
downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \
downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag);
#define MCFG_MSX_SLOT_DISK4_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK4, _startpage, _numpages) \
downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \
downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag);
#define MCFG_MSX_SLOT_DISK5_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag, _floppy2_tag, _floppy3_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK5, _startpage, _numpages) \
downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \
downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy2_tag(_floppy2_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy3_tag(_floppy3_tag);
#define MCFG_MSX_SLOT_DISK6_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK6, _startpage, _numpages) \
downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \
downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \
downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag);
class msx_slot_disk_device : public msx_slot_rom_device
{
public:
@ -81,6 +36,21 @@ public:
void set_floppy2_tag(const char *tag) { m_floppy2_tag = tag; }
void set_floppy3_tag(const char *tag) { m_floppy3_tag = tag; }
void set_tags(const char *fdc_tag, const char *floppy0_tag, const char *floppy1_tag)
{
m_fdc_tag = fdc_tag;
m_floppy0_tag = floppy0_tag;
m_floppy1_tag = floppy1_tag;
}
void set_tags(const char *fdc_tag, const char *floppy0_tag, const char *floppy1_tag, const char *floppy2_tag, const char *floppy3_tag)
{
m_fdc_tag = fdc_tag;
m_floppy0_tag = floppy0_tag;
m_floppy1_tag = floppy1_tag;
m_floppy2_tag = floppy2_tag;
m_floppy3_tag = floppy3_tag;
}
protected:
msx_slot_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@ -128,14 +98,13 @@ class msx_slot_disk1_device : public msx_slot_wd_disk_device
public:
msx_slot_disk1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
protected:
virtual void device_start() override;
virtual void device_reset() override;
void post_load();
virtual void device_post_load() override;
private:
uint8_t m_side_control;
@ -151,14 +120,13 @@ class msx_slot_disk2_device : public msx_slot_wd_disk_device
public:
msx_slot_disk2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
protected:
virtual void device_start() override;
virtual void device_reset() override;
void post_load();
virtual void device_post_load() override;
private:
uint8_t m_control;
@ -172,8 +140,8 @@ class msx_slot_disk3_device : public msx_slot_tc8566_disk_device
public:
msx_slot_disk3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
};
@ -182,8 +150,8 @@ class msx_slot_disk4_device : public msx_slot_tc8566_disk_device
public:
msx_slot_disk4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
};
@ -192,16 +160,15 @@ class msx_slot_disk5_device : public msx_slot_wd_disk_device
public:
msx_slot_disk5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ8_MEMBER(io_read);
DECLARE_WRITE8_MEMBER(io_write);
protected:
virtual void device_start() override;
virtual void device_reset() override;
void post_load();
virtual void device_post_load() override;
private:
uint8_t io_read(offs_t offset);
void io_write(offs_t offset, uint8_t data);
uint8_t m_control;
void set_control(uint8_t control);
@ -213,14 +180,13 @@ class msx_slot_disk6_device : public msx_slot_wd_disk_device
public:
msx_slot_disk6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
protected:
virtual void device_start() override;
virtual void device_reset() override;
void post_load();
virtual void device_post_load() override;
private:
uint8_t m_side_motor;

View File

@ -13,7 +13,7 @@ DEFINE_DEVICE_TYPE(MSX_SLOT_FS4600, msx_slot_fs4600_device, "msx_slot_fs4600", "
msx_slot_fs4600_device::msx_slot_fs4600_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, MSX_SLOT_FS4600, tag, owner, clock)
, msx_internal_slot_interface()
, msx_internal_slot_interface(mconfig, *this)
, m_nvram(*this, "nvram")
, m_rom_region(*this, finder_base::DUMMY_TAG)
, m_region_offset(0)
@ -48,8 +48,12 @@ void msx_slot_fs4600_device::device_start()
save_item(NAME(m_sram_address));
save_item(NAME(m_control));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_slot_fs4600_device::restore_banks), this));
restore_banks();
}
void msx_slot_fs4600_device::device_post_load()
{
restore_banks();
}
@ -63,7 +67,7 @@ void msx_slot_fs4600_device::restore_banks()
}
READ8_MEMBER(msx_slot_fs4600_device::read)
uint8_t msx_slot_fs4600_device::read(offs_t offset)
{
if ((m_control & 0x02) && ((offset & 0x3fff) == 0x3ffd))
{
@ -77,7 +81,7 @@ READ8_MEMBER(msx_slot_fs4600_device::read)
}
WRITE8_MEMBER(msx_slot_fs4600_device::write)
void msx_slot_fs4600_device::write(offs_t offset, uint8_t data)
{
if (offset == 0x7ff9)
{

View File

@ -12,10 +12,6 @@
DECLARE_DEVICE_TYPE(MSX_SLOT_FS4600, msx_slot_fs4600_device)
#define MCFG_MSX_SLOT_FS4600_ADD(_tag, _startpage, _numpages, _region, _offset) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_FS4600, _startpage, _numpages) \
downcast<msx_slot_fs4600_device &>(*device).set_rom_start(_region, _offset);
class msx_slot_fs4600_device : public device_t, public msx_internal_slot_interface
{
public:
@ -24,11 +20,12 @@ public:
// configuration helpers
void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; }
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
protected:
virtual void device_start() override;
virtual void device_post_load() override;
virtual void device_add_mconfig(machine_config &config) override;

View File

@ -32,18 +32,17 @@ void msx_slot_music_device::device_start()
}
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_write_handler(0x7c, 0x7d, write8_delegate(FUNC(msx_slot_music_device::write_ym2413), this));
io_space().install_write_handler(0x7c, 0x7d, write8sm_delegate(FUNC(msx_slot_music_device::write_ym2413), this));
}
READ8_MEMBER(msx_slot_music_device::read)
uint8_t msx_slot_music_device::read(offs_t offset)
{
return msx_slot_rom_device::read(space, offset);
return msx_slot_rom_device::read(offset);
}
WRITE8_MEMBER(msx_slot_music_device::write_ym2413)
void msx_slot_music_device::write_ym2413(offs_t offset, uint8_t data)
{
m_ym2413->write(offset & 1, data);
}

View File

@ -13,11 +13,6 @@
DECLARE_DEVICE_TYPE(MSX_SLOT_MUSIC, msx_slot_music_device)
#define MCFG_MSX_SLOT_MUSIC_ADD(_tag, _startpage, _numpages, _region, _offset, _ym2413_tag) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_MUSIC, _startpage, _numpages) \
downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \
downcast<msx_slot_music_device &>(*device).set_ym2413_tag(_ym2413_tag);
class msx_slot_music_device : public msx_slot_rom_device
{
public:
@ -26,14 +21,14 @@ public:
// configuration helpers
void set_ym2413_tag(const char *tag) { m_ym2413_tag = tag; }
virtual DECLARE_READ8_MEMBER(read) override;
DECLARE_WRITE8_MEMBER(write_ym2413);
virtual uint8_t read(offs_t offset) override;
protected:
virtual void device_start() override;
private:
void write_ym2413(offs_t offset, uint8_t data);
ym2413_device *m_ym2413;
const char *m_ym2413_tag;
};

View File

@ -18,7 +18,7 @@ DEFINE_DEVICE_TYPE(MSX_SLOT_PANASONIC08, msx_slot_panasonic08_device, "msx_slot_
msx_slot_panasonic08_device::msx_slot_panasonic08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, MSX_SLOT_PANASONIC08, tag, owner, clock)
, msx_internal_slot_interface()
, msx_internal_slot_interface(mconfig, *this)
, m_nvram(*this, "nvram")
, m_rom_region(*this, finder_base::DUMMY_TAG)
, m_region_offset(0)
@ -56,8 +56,12 @@ void msx_slot_panasonic08_device::device_start()
save_item(NAME(m_selected_bank));
save_item(NAME(m_control));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_slot_panasonic08_device::restore_banks), this));
restore_banks();
}
void msx_slot_panasonic08_device::device_post_load()
{
restore_banks();
}
@ -85,7 +89,7 @@ void msx_slot_panasonic08_device::restore_banks()
}
READ8_MEMBER(msx_slot_panasonic08_device::read)
uint8_t msx_slot_panasonic08_device::read(offs_t offset)
{
if (m_control & 0x04)
{
@ -104,7 +108,7 @@ READ8_MEMBER(msx_slot_panasonic08_device::read)
}
WRITE8_MEMBER(msx_slot_panasonic08_device::write)
void msx_slot_panasonic08_device::write(offs_t offset, uint8_t data)
{
if ((offset & 0xc000) == 0x8000 || (offset & 0xc000) == 0x0000)
{

View File

@ -12,10 +12,6 @@
DECLARE_DEVICE_TYPE(MSX_SLOT_PANASONIC08, msx_slot_panasonic08_device)
#define MCFG_MSX_SLOT_PANASONIC08_ADD(_tag, _startpage, _numpages, _region, _offset) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_PANASONIC08, _startpage, _numpages) \
downcast<msx_slot_panasonic08_device &>(*device).set_rom_start(_region, _offset);
class msx_slot_panasonic08_device : public device_t, public msx_internal_slot_interface
{
public:
@ -24,11 +20,12 @@ public:
// configuration helpers
void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; }
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
protected:
virtual void device_start() override;
virtual void device_post_load() override;
virtual void device_add_mconfig(machine_config &config) override;

View File

@ -8,7 +8,7 @@ DEFINE_DEVICE_TYPE(MSX_SLOT_RAM, msx_slot_ram_device, "msx_slot_ram", "MSX Inter
msx_slot_ram_device::msx_slot_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, MSX_SLOT_RAM, tag, owner, clock)
, msx_internal_slot_interface()
, msx_internal_slot_interface(mconfig, *this)
{
}
@ -18,7 +18,7 @@ void msx_slot_ram_device::device_start()
save_item(NAME(m_ram));
}
READ8_MEMBER(msx_slot_ram_device::read)
uint8_t msx_slot_ram_device::read(offs_t offset)
{
if ( offset >= m_start_address && offset < m_end_address )
{
@ -27,7 +27,7 @@ READ8_MEMBER(msx_slot_ram_device::read)
return 0xFF;
}
WRITE8_MEMBER(msx_slot_ram_device::write)
void msx_slot_ram_device::write(offs_t offset, uint8_t data)
{
if ( offset >= m_start_address && offset < m_end_address )
{

View File

@ -5,23 +5,17 @@
#include "slot.h"
#define MCFG_MSX_SLOT_RAM_ADD(_tag, _startpage, _numpages) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_RAM, _startpage, _numpages)
#define MCFG_MSX_SLOT_RAM_8KB \
downcast<msx_slot_ram_device &>(*device).force_start_address(0xe000);
class msx_slot_ram_device : public device_t,
public msx_internal_slot_interface
{
public:
msx_slot_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// Set to 0xe000 for 8KB RAM
void force_start_address(uint16_t start) { m_start_address = start; }
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
protected:
virtual void device_start() override;

View File

@ -7,7 +7,7 @@ DEFINE_DEVICE_TYPE(MSX_SLOT_RAM_MM, msx_slot_ram_mm_device, "msx_slot_ram_mm", "
msx_slot_ram_mm_device::msx_slot_ram_mm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, MSX_SLOT_RAM_MM, tag, owner, clock)
, msx_internal_slot_interface()
, msx_internal_slot_interface(mconfig, *this)
, m_total_size(0)
, m_bank_mask(0)
, m_ramio_set_bits(0)
@ -40,12 +40,14 @@ void msx_slot_ram_mm_device::device_start()
save_item(NAME(m_ram));
save_item(NAME(m_bank_selected));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_slot_ram_mm_device::restore_banks), this));
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_read_handler(0xFC, 0xFF, read8_delegate(FUNC(msx_slot_ram_mm_device::read_mapper_bank), this));
space.install_write_handler(0xFC, 0xFF, write8_delegate(FUNC(msx_slot_ram_mm_device::write_mapper_bank), this));
io_space().install_read_handler(0xFC, 0xFF, read8sm_delegate(FUNC(msx_slot_ram_mm_device::read_mapper_bank), this));
io_space().install_write_handler(0xFC, 0xFF, write8sm_delegate(FUNC(msx_slot_ram_mm_device::write_mapper_bank), this));
}
void msx_slot_ram_mm_device::device_post_load()
{
restore_banks();
}
void msx_slot_ram_mm_device::restore_banks()
@ -56,22 +58,22 @@ void msx_slot_ram_mm_device::restore_banks()
}
}
READ8_MEMBER(msx_slot_ram_mm_device::read)
uint8_t msx_slot_ram_mm_device::read(offs_t offset)
{
return m_bank_base[offset >> 14][offset & 0x3fff];
}
WRITE8_MEMBER(msx_slot_ram_mm_device::write)
void msx_slot_ram_mm_device::write(offs_t offset, uint8_t data)
{
m_bank_base[offset >> 14][offset & 0x3fff] = data;
}
READ8_MEMBER(msx_slot_ram_mm_device::read_mapper_bank)
uint8_t msx_slot_ram_mm_device::read_mapper_bank(offs_t offset)
{
return m_bank_selected[offset & 3] | m_ramio_set_bits;
}
WRITE8_MEMBER(msx_slot_ram_mm_device::write_mapper_bank)
void msx_slot_ram_mm_device::write_mapper_bank(offs_t offset, uint8_t data)
{
offset &= 3;

View File

@ -5,33 +5,27 @@
#include "slot.h"
#define MCFG_MSX_SLOT_RAM_MM_ADD(_tag, _total_size) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_RAM_MM, 0, 4) \
downcast<msx_slot_ram_mm_device &>(*device).set_total_size(_total_size);
#define MCFG_MSX_SLOT_RAMM_SET_RAMIO_BITS(_ramio_set_bits) \
downcast<msx_slot_ram_mm_device &>(*device).set_ramio_set_bits(_ramio_set_bits);
class msx_slot_ram_mm_device : public device_t, public msx_internal_slot_interface
{
public:
msx_slot_ram_mm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void set_total_size(uint32_t total_size) { m_total_size = total_size; }
void set_ramio_set_bits(uint8_t ramio_set_bits) { m_ramio_set_bits = ramio_set_bits; }
msx_slot_ram_mm_device &set_total_size(uint32_t total_size) { m_total_size = total_size; return *this; }
msx_slot_ram_mm_device &set_ramio_bits(uint8_t ramio_set_bits) { m_ramio_set_bits = ramio_set_bits; return *this; }
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
DECLARE_READ8_MEMBER(read_mapper_bank);
DECLARE_WRITE8_MEMBER(write_mapper_bank);
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
protected:
virtual void device_start() override;
virtual void device_post_load() override;
void restore_banks();
private:
uint8_t read_mapper_bank(offs_t offset);
void write_mapper_bank(offs_t offset, uint8_t data);
std::vector<uint8_t> m_ram;
uint32_t m_total_size;
uint8_t m_bank_mask;

View File

@ -15,7 +15,7 @@ msx_slot_rom_device::msx_slot_rom_device(const machine_config &mconfig, const ch
msx_slot_rom_device::msx_slot_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, type, tag, owner, clock)
, msx_internal_slot_interface()
, msx_internal_slot_interface(mconfig, *this)
, m_rom_region(*this, finder_base::DUMMY_TAG)
, m_region_offset(0)
, m_rom(nullptr)
@ -35,7 +35,7 @@ void msx_slot_rom_device::device_start()
}
READ8_MEMBER(msx_slot_rom_device::read)
uint8_t msx_slot_rom_device::read(offs_t offset)
{
if (offset >= m_start_address && offset < m_end_address)
{

View File

@ -7,10 +7,6 @@
#include "slot.h"
#define MCFG_MSX_SLOT_ROM_ADD(_tag, _startpage, _numpages, _region, _offset) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_ROM, _startpage, _numpages) \
downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset);
class msx_slot_rom_device : public device_t,
public msx_internal_slot_interface
{
@ -20,7 +16,7 @@ public:
// configuration helpers
void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; }
virtual DECLARE_READ8_MEMBER(read) override;
virtual uint8_t read(offs_t offset) override;
protected:
msx_slot_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);

View File

@ -13,9 +13,12 @@ pages; and multiple pieces of rom/ram/components can occur in a single slot.
#include "emu.h"
#include "slot.h"
msx_internal_slot_interface::msx_internal_slot_interface()
: m_start_address(0)
msx_internal_slot_interface::msx_internal_slot_interface(const machine_config &mconfig, device_t &device)
: m_mem_space(device, finder_base::DUMMY_TAG, -1)
, m_io_space(device, finder_base::DUMMY_TAG, -1)
, m_start_address(0)
, m_size(0)
, m_end_address(0)
{
(void)mconfig;
}

View File

@ -15,25 +15,29 @@ pages; and multiple pieces of rom/ram/components can occur in a single slot.
#pragma once
#define MCFG_MSX_INTERNAL_SLOT_ADD(_tag, _type, _startpage, _numpages) \
MCFG_DEVICE_ADD(_tag, _type, 0) \
dynamic_cast<msx_internal_slot_interface &>(*device).set_start_address(_startpage * 0x4000); \
dynamic_cast<msx_internal_slot_interface &>(*device).set_size(_numpages * 0x4000);
class msx_internal_slot_interface
{
public:
msx_internal_slot_interface();
msx_internal_slot_interface(const machine_config &mconfig, device_t &device);
msx_internal_slot_interface(const msx_internal_slot_interface &device) = delete;
virtual ~msx_internal_slot_interface() { }
// configuration helpers
template <typename T> void set_memory_space(T &&tag, int spacenum) { m_mem_space.set_tag(std::forward<T>(tag), spacenum); }
template <typename T> void set_io_space(T &&tag, int spacenum) { m_io_space.set_tag(std::forward<T>(tag), spacenum); }
void set_start_address(uint32_t start_address) { m_start_address = start_address; m_end_address = m_start_address + m_size; }
void set_size(uint32_t size) { m_size = size; m_end_address = m_start_address + m_size; }
virtual DECLARE_READ8_MEMBER(read) { return 0xFF; }
virtual DECLARE_WRITE8_MEMBER(write) { }
virtual uint8_t read(offs_t offset) { return 0xFF; }
virtual void write(offs_t offset, uint8_t data) { }
address_space &memory_space() const { return *m_mem_space; }
address_space &io_space() const { return *m_io_space; }
protected:
required_address_space m_mem_space;
required_address_space m_io_space;
uint32_t m_start_address;
uint32_t m_size;
uint32_t m_end_address;

View File

@ -15,7 +15,7 @@ DEFINE_DEVICE_TYPE(MSX_SLOT_SONY08, msx_slot_sony08_device, "msx_slot_sony08", "
msx_slot_sony08_device::msx_slot_sony08_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, MSX_SLOT_SONY08, tag, owner, clock)
, msx_internal_slot_interface()
, msx_internal_slot_interface(mconfig, *this)
, m_nvram(*this, "nvram")
, m_rom_region(*this, finder_base::DUMMY_TAG)
, m_region_offset(0)
@ -50,8 +50,12 @@ void msx_slot_sony08_device::device_start()
save_item(NAME(m_selected_bank));
machine().save().register_postload(save_prepost_delegate(FUNC(msx_slot_sony08_device::restore_banks), this));
restore_banks();
}
void msx_slot_sony08_device::device_post_load()
{
restore_banks();
}
@ -96,7 +100,7 @@ void msx_slot_sony08_device::restore_banks()
}
READ8_MEMBER(msx_slot_sony08_device::read)
uint8_t msx_slot_sony08_device::read(offs_t offset)
{
if (offset >= 0xc000)
{
@ -118,7 +122,7 @@ READ8_MEMBER(msx_slot_sony08_device::read)
}
WRITE8_MEMBER(msx_slot_sony08_device::write)
void msx_slot_sony08_device::write(offs_t offset, uint8_t data)
{
if (offset < 0x4000)
{

View File

@ -12,10 +12,6 @@
DECLARE_DEVICE_TYPE(MSX_SLOT_SONY08, msx_slot_sony08_device)
#define MCFG_MSX_SLOT_SONY08_ADD(_tag, _startpage, _numpages, _region, _offset) \
MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_SONY08, _startpage, _numpages) \
downcast<msx_slot_sony08_device &>(*device).set_rom_start(_region, _offset);
class msx_slot_sony08_device : public device_t, public msx_internal_slot_interface
{
public:
@ -24,11 +20,12 @@ public:
// configuration helpers
void set_rom_start(const char *region, uint32_t offset) { m_rom_region.set_tag(region); m_region_offset = offset; }
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
protected:
virtual void device_start() override;
virtual void device_post_load() override;
virtual void device_add_mconfig(machine_config &config) override;

File diff suppressed because it is too large Load Diff

View File

@ -13,6 +13,7 @@
#include "machine/i8255.h"
#include "machine/rp5c01.h"
#include "machine/buffer.h"
#include "machine/input_merger.h"
#include "bus/centronics/ctronics.h"
#include "sound/ay8910.h"
#include "sound/dac.h"
@ -42,73 +43,6 @@
#define TC8521_TAG "rtc"
#define MCFG_MSX_LAYOUT_ROM(_tag, _prim, _sec, _page, _numpages, _region, _offset) \
MCFG_MSX_SLOT_ROM_ADD(_tag, _page, _numpages, _region, _offset) \
install_slot_pages(_prim, _sec, _page, _numpages, device);
#define MCFG_MSX_LAYOUT_RAM(_tag, _prim, _sec, _page, _numpages) \
MCFG_MSX_SLOT_RAM_ADD(_tag, _page, _numpages) \
install_slot_pages(_prim, _sec, _page, _numpages, device);
#define MCFG_MSX_LAYOUT_CARTRIDGE(_tag, _prim, _sec) \
MCFG_MSX_SLOT_CARTRIDGE_ADD(_tag, WRITELINE("mainirq", input_merger_device, in_w<1>)) \
install_slot_pages(_prim, _sec, 0, 4, device);
#define MCFG_MSX_LAYOUT_YAMAHA_EXPANSION(_tag, _prim, _sec, _default) \
MCFG_MSX_SLOT_YAMAHA_EXPANSION_ADD(_tag, WRITELINE("mainirq", input_merger_device, in_w<2>), _default) \
install_slot_pages(_prim, _sec, 0, 4, device);
#define MCFG_MSX_LAYOUT_RAM_MM(_tag, _prim, _sec, _total_size) \
MCFG_MSX_SLOT_RAM_MM_ADD(_tag, _total_size) \
install_slot_pages(_prim, _sec, 0, 4, device);
#define MCFG_MSX_RAMIO_SET_BITS(_ramio_set_bits) \
MCFG_MSX_SLOT_RAMM_SET_RAMIO_BITS(_ramio_set_bits)
#define MCFG_MSX_LAYOUT_DISK1(_tag, _prim, _sec, _page, _numpages, _region, _offset) \
MCFG_MSX_SLOT_DISK1_ADD(_tag, _page, _numpages, _region, _offset, "fdc", "fdc:0", "fdc:1") \
install_slot_pages(_prim, _sec, _page, _numpages + 1, device); /* Memory mapped FDC registers are also accessible through page 2 */
#define MCFG_MSX_LAYOUT_DISK2(_tag, _prim, _sec, _page, _numpages, _region, _offset) \
MCFG_MSX_SLOT_DISK2_ADD(_tag, _page, _numpages, _region, _offset, "fdc", "fdc:0", "fdc:1") \
install_slot_pages(_prim, _sec, _page, _numpages + 1, device); /* Memory mapped FDC registers are also accessible through page 2 */
#define MCFG_MSX_LAYOUT_DISK3(_tag, _prim, _sec, _page, _numpages, _region, _offset) \
MCFG_MSX_SLOT_DISK3_ADD(_tag, _page, _numpages, _region, _offset, "fdc", "fdc:0", "fdc:1") \
install_slot_pages(_prim, _sec, _page, _numpages, device);
#define MCFG_MSX_LAYOUT_DISK4(_tag, _prim, _sec, _page, _numpages, _region, _offset) \
MCFG_MSX_SLOT_DISK4_ADD(_tag, _page, _numpages, _region, _offset, "fdc", "fdc:0", "fdc:1") \
install_slot_pages(_prim, _sec, _page, _numpages, device);
#define MCFG_MSX_LAYOUT_DISK5(_tag, _prim, _sec, _page, _numpages, _region, _offset) \
MCFG_MSX_SLOT_DISK5_ADD(_tag, _page, _numpages, _region, _offset, "fdc", "fdc:0", "fdc:1", "fdc:2", "fdc:3") \
install_slot_pages(_prim, _sec, _page, _numpages, device);
#define MCFG_MSX_LAYOUT_DISK6(_tag, _prim, _sec, _page, _numpages, _region, _offset) \
MCFG_MSX_SLOT_DISK6_ADD(_tag, _page, _numpages, _region, _offset, "fdc", "fdc:0", "fdc:1") \
install_slot_pages(_prim, _sec, _page, _numpages, device);
#define MCFG_MSX_LAYOUT_MUSIC(_tag, _prim, _sec, _page, _numpages, _region, _offset) \
MCFG_MSX_SLOT_MUSIC_ADD(_tag, _page, _numpages, _region, _offset, "ym2413" ) \
install_slot_pages(_prim, _sec, _page, _numpages, device);
#define MCFG_MSX_LAYOUT_BUNSETSU(_tag, _prim, _sec, _page, _numpages, _region, _offset, _bunsetsu_tag) \
MCFG_MSX_SLOT_BUNSETSU_ADD(_tag, _page, _numpages, _region, _offset, _bunsetsu_tag) \
install_slot_pages(_prim, _sec, _page, _numpages, device);
#define MCFG_MSX_LAYOUT_FS4600(_tag, _prim, _sec, _page, _numpages, _region, _offset) \
MCFG_MSX_SLOT_FS4600_ADD(_tag, _page, _numpages, _region, _offset) \
install_slot_pages(_prim, _sec, _page, _numpages, device);
#define MCFG_MSX_LAYOUT_PANASONIC08(_tag, _prim, _sec, _page, _numpages, _region, _offset) \
MCFG_MSX_SLOT_PANASONIC08_ADD(_tag, _page, _numpages, _region, _offset) \
install_slot_pages(_prim, _sec, _page, _numpages, device);
#define MCFG_MSX_LAYOUT_SONY08(_tag, _prim, _sec, _page, _numpages, _region, _offset) \
MCFG_MSX_SLOT_SONY08_ADD(_tag, _page, _numpages, _region, _offset) \
install_slot_pages(_prim, _sec, _page, _numpages, device);
class msx_state : public driver_device
{
@ -128,6 +62,7 @@ public:
, m_leds(*this, "led%u", 1U)
, m_psg_b(0)
, m_kanji_latch(0)
, m_empty_slot(mconfig, *this)
, m_primary_slot(0)
, m_port_c_old(0)
, m_keylatch(0)
@ -146,6 +81,8 @@ public:
}
m_mouse[0] = m_mouse[1] = 0;
m_mouse_stat[0] = m_mouse_stat[1] = 0;
m_empty_slot.set_memory_space(m_maincpu, AS_PROGRAM);
m_empty_slot.set_io_space(m_maincpu, AS_IO);
}
void hc6(machine_config &config);
@ -295,7 +232,57 @@ protected:
void msx_2_35_dd_drive(machine_config &config);
// static configuration helpers
void install_slot_pages(uint8_t prim, uint8_t sec, uint8_t page, uint8_t numpages, device_t *device);
void install_slot_pages(uint8_t prim, uint8_t sec, uint8_t page, uint8_t numpages, msx_internal_slot_interface &device);
template <typename T, typename U>
auto &add_internal_slot(machine_config &config, T &&type, U &&tag, uint8_t prim, uint8_t sec, uint8_t page, uint8_t numpages)
{
auto &device(std::forward<T>(type)(config, std::forward<U>(tag), 0U));
device.set_memory_space(m_maincpu, AS_PROGRAM);
device.set_io_space(m_maincpu, AS_IO);
device.set_start_address(page * 0x4000);
device.set_size(numpages * 0x4000);
install_slot_pages(prim, sec, page, numpages, device);
return device;
}
template <typename T, typename U>
auto &add_internal_slot(machine_config &config, T &&type, U &&tag, uint8_t prim, uint8_t sec, uint8_t page, uint8_t numpages, const char *region, uint32_t offset)
{
auto &device(std::forward<T>(type)(config, std::forward<U>(tag), 0U));
device.set_memory_space(m_maincpu, AS_PROGRAM);
device.set_io_space(m_maincpu, AS_IO);
device.set_start_address(page * 0x4000);
device.set_size(numpages * 0x4000);
device.set_rom_start(region, offset);
install_slot_pages(prim, sec, page, numpages, device);
return device;
}
template <typename T, typename U>
auto &add_internal_slot_mirrored(machine_config &config, T &&type, U &&tag, uint8_t prim, uint8_t sec, uint8_t page, uint8_t numpages, const char *region, uint32_t offset)
{
// Memory mapped FDC registers are also accessible through page 2
auto &device(type(config, std::forward<U>(tag), 0U));
device.set_memory_space(m_maincpu, AS_PROGRAM);
device.set_io_space(m_maincpu, AS_IO);
device.set_start_address(page * 0x4000);
device.set_size(0x4000);
device.set_rom_start(region, offset);
install_slot_pages(prim, sec, page, numpages, device);
return device;
}
template <int N, typename T, typename U, typename V>
auto &add_cartridge_slot(machine_config &config, T &&type, U &&tag, uint8_t prim, uint8_t sec, V &&intf, const char *deft)
{
auto &device(type(config, std::forward<U>(tag), 0U));
device.set_memory_space(m_maincpu, AS_PROGRAM);
device.set_io_space(m_maincpu, AS_IO);
device.option_reset();
intf(device);
device.set_default_option(deft);
device.set_fixed(false);
device.irq_handler().set("mainirq", FUNC(input_merger_device::in_w<N>));
install_slot_pages(prim, sec, 0, 4, device);
return device;
}
virtual void driver_start() override;
virtual void machine_start() override;

View File

@ -362,13 +362,11 @@ READ8_MEMBER( msx_state::msx_ppi_port_b_r )
*
***********************************************************************/
void msx_state::install_slot_pages(uint8_t prim, uint8_t sec, uint8_t page, uint8_t numpages, device_t *device)
void msx_state::install_slot_pages(uint8_t prim, uint8_t sec, uint8_t page, uint8_t numpages, msx_internal_slot_interface &device)
{
msx_internal_slot_interface *internal_slot = dynamic_cast<msx_internal_slot_interface *>(device);
for ( int i = page; i < std::min(page + numpages, 4); i++ )
{
m_all_slots[prim][sec][i] = internal_slot;
m_all_slots[prim][sec][i] = &device;
}
if ( sec )
{
@ -430,12 +428,12 @@ void msx_state::msx_memory_map_all ()
READ8_MEMBER( msx_state::msx_mem_read )
{
return m_current_page[offset >> 14]->read(space, offset);
return m_current_page[offset >> 14]->read(offset);
}
WRITE8_MEMBER( msx_state::msx_mem_write )
{
m_current_page[offset >> 14]->write(space, offset, data);
m_current_page[offset >> 14]->write(offset, data);
}
WRITE8_MEMBER( msx_state::msx_sec_slot_w )
@ -450,7 +448,7 @@ WRITE8_MEMBER( msx_state::msx_sec_slot_w )
msx_memory_map_all ();
}
else
m_current_page[3]->write(space, 0xffff, data);
m_current_page[3]->write(0xffff, data);
}
READ8_MEMBER( msx_state::msx_sec_slot_r )
@ -463,7 +461,7 @@ READ8_MEMBER( msx_state::msx_sec_slot_r )
}
else
{
return m_current_page[3]->read(space, 0xffff);
return m_current_page[3]->read(0xffff);
}
}