Skip to content

Commit 8321d0e

Browse files
committed
end state for mamedev#13253 + mamedev#13202
1 parent 5bd6146 commit 8321d0e

File tree

10 files changed

+69
-32
lines changed

10 files changed

+69
-32
lines changed

scripts/src/bus.lua

+2
Original file line numberDiff line numberDiff line change
@@ -1896,6 +1896,8 @@ if (BUSES["ISA"]~=null) then
18961896
MAME_DIR .. "src/devices/bus/isa/xsu_cards.h",
18971897
MAME_DIR .. "src/devices/bus/isa/xtide.cpp",
18981898
MAME_DIR .. "src/devices/bus/isa/xtide.h",
1899+
MAME_DIR .. "src/devices/bus/isa/zxbus_adapter.cpp",
1900+
MAME_DIR .. "src/devices/bus/isa/zxbus_adapter.h",
18991901
}
19001902
end
19011903

src/devices/bus/isa/isa_cards.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
#include "finalchs.h"
9191
#include "hpblp.h"
9292
#include "opus100pm.h"
93+
#include "zxbus_adapter.h"
9394

9495

9596
void pc_isa8_cards(device_slot_interface &device)
@@ -148,6 +149,7 @@ void pc_isa8_cards(device_slot_interface &device)
148149
device.option_add("acb2072", ACB2072);
149150
device.option_add("3xtwin", ISA8_3XTWIN);
150151
device.option_add("opus108pm", ISA8_OPUS108PM);
152+
device.option_add("zxbus_adapter", ISA8_ZXBUS);
151153
}
152154

153155
void pc_isa16_cards(device_slot_interface &device)

src/devices/bus/isa/zxbus_adapter.cpp

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// license:BSD-3-Clause
2+
// copyright-holders:Andrei I. Holub
3+
#include "emu.h"
4+
#include "zxbus_adapter.h"
5+
6+
DEFINE_DEVICE_TYPE(ISA8_ZXBUS, zxbus_adapter_device, "zxbus_adapter", "ISA8 to ZXBUS Adapter")
7+
8+
zxbus_adapter_device::zxbus_adapter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
9+
: device_t(mconfig, ISA8_ZXBUS, tag, owner, clock)
10+
, device_isa8_card_interface(mconfig, *this)
11+
, m_isa_io_view(*this, "isa_io_view")
12+
, m_zxbus(*this, "zxbus")
13+
{
14+
}
15+
16+
void zxbus_adapter_device::device_start()
17+
{
18+
set_isa_device();
19+
m_isa->space(isa8_device::AS_ISA_IO).install_view(0x0000, 0xffff, m_isa_io_view);
20+
m_zxbus->set_io_space(m_isa_io_view[0], m_isa_io_view[0]);
21+
m_isa_io_view.select(0);
22+
}
23+
24+
void zxbus_adapter_device::device_add_mconfig(machine_config &config)
25+
{
26+
ZXBUS(config, m_zxbus, 0);
27+
ZXBUS_SLOT(config, "card", 0, m_zxbus, zxbus_cards, nullptr);
28+
}

src/devices/bus/isa/zxbus_adapter.h

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// license:BSD-3-Clause
2+
// copyright-holders:Andrei I. Holub
3+
#ifndef MAME_BUS_ISA_ZXBUS_ADAPTER_H
4+
#define MAME_BUS_ISA_ZXBUS_ADAPTER_H
5+
6+
#include "isa.h"
7+
8+
#include "bus/spectrum/zxbus.h"
9+
10+
class zxbus_adapter_device: public device_t, public device_isa8_card_interface
11+
{
12+
public:
13+
zxbus_adapter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
14+
15+
protected:
16+
virtual void device_start() override ATTR_COLD;
17+
virtual void device_add_mconfig(machine_config &config) override ATTR_COLD;
18+
19+
private:
20+
memory_view m_isa_io_view;
21+
required_device<zxbus_device> m_zxbus;
22+
23+
};
24+
25+
DECLARE_DEVICE_TYPE(ISA8_ZXBUS, zxbus_adapter_device)
26+
27+
#endif // MAME_BUS_ISA_ZXBUS_ADAPTER_H

src/devices/bus/spectrum/zxbus.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,6 @@ device_zxbus_card_interface::device_zxbus_card_interface(const machine_config &m
6969
{
7070
}
7171

72-
void zxbus_device::install_shadow_io(memory_view::memory_view_entry &io_view)
73-
{
74-
m_shadow_io_view = &io_view;
75-
}
76-
7772
void device_zxbus_card_interface::interface_pre_start()
7873
{
7974
if (!m_zxbus)

src/devices/bus/spectrum/zxbus.h

-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ class zxbus_device : public device_t
9292
}
9393

9494
void add_slot(zxbus_slot_device &slot);
95-
void install_shadow_io(memory_view::memory_view_entry &io_view);
9695

9796
protected:
9897
zxbus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);

src/mame/sinclair/scorpion.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,7 @@ void scorpion_state::scorpion_mem(address_map &map)
334334
void scorpion_state::scorpion_io(address_map &map)
335335
{
336336
map.unmap_value_high();
337+
337338
map(0x0021, 0x0021).mirror(0x3fdc) // 1FFD | 00xxxxxxxx1xxx01
338339
.w(FUNC(scorpion_state::port_1ffd_w));
339340
map(0x4021, 0x4021).mirror(0x3fdc) // 7FFD | 01xxxxxxxx1xxx01

src/mame/sinclair/sprinter.cpp

+3-19
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ Sprinter Sp2000 (Peters Plus Ltd)
4646
#include "bus/pc_kbd/pc_kbdc.h"
4747
#include "bus/rs232/hlemouse.h"
4848
#include "bus/rs232/rs232.h"
49-
#include "bus/spectrum/zxbus.h"
5049
#include "cpu/z80/z84c015.h"
5150
#include "machine/ds128x.h"
5251
#include "sound/ay8910.h"
@@ -79,8 +78,7 @@ class sprinter_state : public spectrum_128_state
7978
sprinter_state(const machine_config &mconfig, device_type type, const char *tag)
8079
: spectrum_128_state(mconfig, type, tag)
8180
, m_maincpu(*this, "maincpu")
82-
, m_isa(*this, "isa%u", 0U)
83-
, m_isa_io_view(*this, "isa_io_view")
81+
, m_isa(*this, "isa8%u", 0U)
8482
, m_rtc(*this, "rtc")
8583
, m_ata(*this, "ata%u", 1U)
8684
, m_beta(*this, BETA_DISK_TAG)
@@ -114,7 +112,6 @@ class sprinter_state : public spectrum_128_state
114112
void map_io(address_map &map) ATTR_COLD;
115113
void map_mem(address_map &map) ATTR_COLD;
116114
void map_fetch(address_map &map) ATTR_COLD;
117-
void map_isa_io(address_map &map) ATTR_COLD;
118115
u8 m1_r(offs_t offset);
119116
void cio_dtrb_w(int state);
120117
u8 joy_ctrl_r(int num);
@@ -141,7 +138,6 @@ class sprinter_state : public spectrum_128_state
141138

142139
required_device<z84c015_device> m_maincpu;
143140
required_device_array<isa8_device, 2> m_isa;
144-
memory_view m_isa_io_view;
145141

146142
private:
147143
enum accel_state : u8
@@ -1399,19 +1395,8 @@ void sprinter_state::init_taps()
13991395
});
14001396
}
14011397

1402-
void sprinter_state::map_isa_io(address_map &map)
1403-
{
1404-
map.unmap_value_high();
1405-
map(0x0000, 0xffff).view(m_isa_io_view);
1406-
subdevice<zxbus_device>("zxbus")->set_io_space(m_isa_io_view[0], m_isa_io_view[0]);
1407-
m_isa_io_view.select(0);
1408-
}
1409-
14101398
void sprinter_state::machine_start()
14111399
{
1412-
address_space &m_isa_io = m_isa[0]->space(isa8_device::AS_ISA_IO);
1413-
m_isa_io.install_device(0x0000, 0xffff, *this, &sprinter_state::map_isa_io);
1414-
14151400
m_isa[0]->space(isa8_device::AS_ISA_IO).unmap_value_high();
14161401
m_isa[1]->space(isa8_device::AS_ISA_IO).unmap_value_high();
14171402

@@ -1907,12 +1892,11 @@ void sprinter_state::sprinter(machine_config &config)
19071892

19081893
ISA8(config, m_isa[0], X_SP / 5);
19091894
m_isa[0]->set_custom_spaces();
1910-
zxbus_device &zxbus(ZXBUS(config, "zxbus", 0));
1911-
ZXBUS_SLOT(config, "zxbus2isa", 0, zxbus, zxbus_cards, nullptr);
1895+
ISA8_SLOT(config, "isa0", 0, m_isa[0], pc_isa8_cards, "zxbus_adapter", false);
19121896

19131897
ISA8(config, m_isa[1], X_SP / 5);
19141898
m_isa[1]->set_custom_spaces();
1915-
ISA8_SLOT(config, "isa8", 0, m_isa[1], pc_isa8_cards, nullptr, false);
1899+
ISA8_SLOT(config, "isa1", 0, m_isa[1], pc_isa8_cards, nullptr, false);
19161900

19171901
m_screen->set_raw(X_SP / 3, SPRINT_WIDTH, SPRINT_HEIGHT, { 0, SPRINT_XVIS - 1, 0, SPRINT_YVIS - 1 });
19181902
m_screen->set_screen_update(FUNC(sprinter_state::screen_update));

src/mame/sinclair/tsconf.cpp

+5-2
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,12 @@ void tsconf_state::tsconf_io(address_map &map)
9797
map(0xc0fd, 0xc0fd).mirror(0x3f00).lr8(NAME([this]() { return m_ay[m_ay_selected]->data_r(); }))
9898
.w(FUNC(tsconf_state::tsconf_ay_address_w));
9999

100-
// IO: Shadow
101100
map(0x0000, 0xffff).view(m_io_shadow_view);
102-
m_io_shadow_view[0](0x0000, 0xffff).m(m_beta, FUNC(tsconf_beta_device::tsconf_beta_io));
101+
m_io_shadow_view[0]; // !Shadow
102+
103+
// IO: Shadow
104+
m_io_shadow_view[1](0x0000, 0xffff).m(m_beta, FUNC(tsconf_beta_device::tsconf_beta_io));
105+
subdevice<zxbus_device>("zxbus")->set_io_space(m_io_shadow_view[0], m_io_shadow_view[1]);
103106
}
104107

105108
void tsconf_state::tsconf_switch(address_map &map)

src/mame/sinclair/tsconf_m.cpp

+1-5
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,7 @@ void tsconf_state::tsconf_update_bank0()
7373

7474
void tsconf_state::update_io(int dos)
7575
{
76-
if (dos)
77-
m_io_shadow_view.select(0);
78-
else
79-
m_io_shadow_view.disable();
80-
76+
m_io_shadow_view.select(dos ? 1 : 0);
8177
tsconf_update_bank0();
8278
}
8379

0 commit comments

Comments
 (0)