summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/isa/zxbus_adapter.cpp
blob: cadefe9a156bfa27a44efc4fbfdc83136ac06da9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// license:BSD-3-Clause
// copyright-holders:Andrei I. Holub
#include "emu.h"
#include "zxbus_adapter.h"

DEFINE_DEVICE_TYPE(ISA8_ZXBUS, zxbus_adapter_device, "zxbus_adapter", "ISA8 to ZXBUS Adapter")

zxbus_adapter_device::zxbus_adapter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
	: device_t(mconfig, ISA8_ZXBUS, tag, owner, clock)
	, device_isa8_card_interface(mconfig, *this)
	, m_isa_io_view(*this, "isa_io_view")
	, m_zxbus(*this, "zxbus")
{
}

void zxbus_adapter_device::remap(int space_id, offs_t start, offs_t end)
{
	if (space_id == AS_IO)
	{
		m_isa->space(isa8_device::AS_ISA_IO).install_view(0x0000, 0xffff, m_isa_io_view);
	}
}

void zxbus_adapter_device::device_start()
{
	set_isa_device();
	remap(AS_IO, 0, 0xffff);

	m_zxbus->set_io_space(m_isa_io_view[0], m_isa_io_view[0]);
	m_isa_io_view.select(0);
}

void zxbus_adapter_device::device_add_mconfig(machine_config &config)
{
	ZXBUS(config, m_zxbus, 0);
	ZXBUS_SLOT(config, "card", 0, m_zxbus, zxbus_cards, nullptr);
}