summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/msx_cart/cartridge.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/msx_cart/cartridge.h')
-rw-r--r--src/devices/bus/msx_cart/cartridge.h21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/devices/bus/msx_cart/cartridge.h b/src/devices/bus/msx_cart/cartridge.h
index 381ec09e566..529d2f0a081 100644
--- a/src/devices/bus/msx_cart/cartridge.h
+++ b/src/devices/bus/msx_cart/cartridge.h
@@ -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;
};