1 // license:BSD-3-Clause 2 // copyright-holders:Wilbert Pol 3 #ifndef MAME_BUS_MSX_CART_CARTRIDGE_H 4 #define MAME_BUS_MSX_CART_CARTRIDGE_H 5 6 #pragma once 7 8 9 void msx_cart(device_slot_interface &device); 10 void msx_yamaha_60pin(device_slot_interface &device); // 60 pin expansion slots as found in yamaha machines 11 12 13 class msx_slot_cartridge_device; 14 15 class msx_cart_interface : public device_interface 16 { 17 friend class msx_slot_cartridge_device; 18 19 public: 20 // This is called after loading cartridge contents and allows the cartridge 21 // implementation to perform some additional initialization based on the 22 // cartridge contents. initialize_cartridge()23 virtual void initialize_cartridge() { } interface_pre_start()24 virtual void interface_pre_start() override { assert(m_exp != nullptr); } 25 26 // reading and writing read_cart(offs_t offset)27 virtual uint8_t read_cart(offs_t offset) { return 0xff; } write_cart(offs_t offset,uint8_t data)28 virtual void write_cart(offs_t offset, uint8_t data) { } 29 30 DECLARE_WRITE_LINE_MEMBER(irq_out); 31 address_space &memory_space() const; 32 address_space &io_space() const; 33 34 // ROM/RAM/SRAM management 35 // Mainly used by the cartridge slot when loading images 36 void rom_alloc(uint32_t size); 37 void ram_alloc(uint32_t size); 38 void rom_vlm5030_alloc(uint32_t size); 39 void sram_alloc(uint32_t size); 40 get_rom_base()41 uint8_t* get_rom_base() { return &m_rom[0]; } get_rom_vlm5030_base()42 uint8_t* get_rom_vlm5030_base() { return &m_rom_vlm5030[0]; } get_ram_base()43 uint8_t* get_ram_base() { return &m_ram[0]; } get_sram_base()44 uint8_t* get_sram_base() { return &m_sram[0]; } get_rom_size()45 uint32_t get_rom_size() { return m_rom.size(); } get_rom_vlm5030_size()46 uint32_t get_rom_vlm5030_size() { return m_rom_vlm5030.size(); } get_ram_size()47 uint32_t get_ram_size() { return m_ram.size(); } get_sram_size()48 uint32_t get_sram_size() { return m_sram.size(); } 49 50 protected: 51 msx_cart_interface(const machine_config &mconfig, device_t &device); 52 53 std::vector<uint8_t> m_rom; 54 std::vector<uint8_t> m_ram; 55 std::vector<uint8_t> m_rom_vlm5030; 56 std::vector<uint8_t> m_sram; 57 58 private: 59 msx_slot_cartridge_device *m_exp; 60 }; 61 62 63 #endif // MAME_BUS_MSX_CART_CARTRIDGE_H 64