mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
coco12.cpp: Added handlers for CTS region $C000-$FEFF, allows cartridges to implement devices in this region.
This commit is contained in:
parent
7255f87b9e
commit
d4ab3c5549
@ -151,6 +151,30 @@ void cococart_slot_device::device_timer(emu_timer &timer, device_timer_id id, in
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cts_read
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER(cococart_slot_device::cts_read)
|
||||
{
|
||||
uint8_t result = 0x00;
|
||||
if (m_cart)
|
||||
result = m_cart->cts_read(space, offset);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cts_write
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER(cococart_slot_device::cts_write)
|
||||
{
|
||||
if (m_cart)
|
||||
m_cart->cts_write(space, offset, data);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// scs_read
|
||||
//-------------------------------------------------
|
||||
@ -412,7 +436,7 @@ image_init_result cococart_slot_device::call_load()
|
||||
{
|
||||
memory_region *cart_mem = m_cart->get_cart_memregion();
|
||||
uint8_t *base = cart_mem->base();
|
||||
offs_t read_length, cart_length = cart_mem->bytes();;
|
||||
offs_t read_length, cart_length = cart_mem->bytes();
|
||||
|
||||
if (!loaded_through_softlist())
|
||||
{
|
||||
@ -501,6 +525,33 @@ void device_cococart_interface::interface_pre_start()
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cts_read - Signifies a read where the CTS pin
|
||||
// on the cartridge slot was asserted ($C000-FFEF)
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER(device_cococart_interface::cts_read)
|
||||
{
|
||||
memory_region *cart_mem = get_cart_memregion();
|
||||
offs_t cart_length = cart_mem->bytes();
|
||||
|
||||
if (cart_mem)
|
||||
return cart_mem->base()[offset & (cart_length - 1)];
|
||||
else
|
||||
return 0x00;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cts_write - Signifies a write where the CTS pin
|
||||
// on the cartridge slot was asserted ($C000-FFEF)
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER(device_cococart_interface::cts_write)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// scs_read - Signifies a read where the SCS pin
|
||||
// on the cartridge slot was asserted ($FF40-5F)
|
||||
|
@ -88,6 +88,10 @@ public:
|
||||
// slot interface overrides
|
||||
virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override;
|
||||
|
||||
// reading and writing to $C000-$FFEF
|
||||
DECLARE_READ8_MEMBER(cts_read);
|
||||
DECLARE_WRITE8_MEMBER(cts_write);
|
||||
|
||||
// reading and writing to $FF40-$FF5F
|
||||
DECLARE_READ8_MEMBER(scs_read);
|
||||
DECLARE_WRITE8_MEMBER(scs_write);
|
||||
@ -161,6 +165,8 @@ public:
|
||||
// construction/destruction
|
||||
virtual ~device_cococart_interface();
|
||||
|
||||
virtual DECLARE_READ8_MEMBER(cts_read);
|
||||
virtual DECLARE_WRITE8_MEMBER(cts_write);
|
||||
virtual DECLARE_READ8_MEMBER(scs_read);
|
||||
virtual DECLARE_WRITE8_MEMBER(scs_write);
|
||||
virtual void set_sound_enable(bool sound_enable);
|
||||
|
@ -30,12 +30,13 @@ void coco12_state::device_start()
|
||||
void coco12_state::configure_sam()
|
||||
{
|
||||
uint8_t *rom = memregion(MAINCPU_TAG)->base();
|
||||
uint8_t *cart_rom = cococart().get_cart_base();
|
||||
|
||||
m_sam->configure_bank(0, ram().pointer(), ram().size(), false); // $0000-$7FFF
|
||||
m_sam->configure_bank(1, &rom[0x0000], 0x2000, true); // $8000-$9FFF
|
||||
m_sam->configure_bank(2, &rom[0x2000], 0x2000, true); // $A000-$BFFF
|
||||
m_sam->configure_bank(3, cart_rom, 0x4000, true); // $C000-$FEFF
|
||||
|
||||
// $C000-$FEFF
|
||||
m_sam->configure_bank(3, read8_delegate(FUNC(cococart_slot_device::cts_read), m_cococart.target()), write8_delegate(FUNC(cococart_slot_device::cts_write), m_cococart.target()));
|
||||
|
||||
// $FF00-$FF1F
|
||||
m_sam->configure_bank(4, read8_delegate(FUNC(coco12_state::ff00_read), this), write8_delegate(FUNC(coco12_state::ff00_write), this));
|
||||
|
Loading…
Reference in New Issue
Block a user