diff options
| -rw-r--r-- | scripts/src/bus.lua | 2 | ||||
| -rw-r--r-- | src/devices/bus/isa/isa_cards.cpp | 2 | ||||
| -rw-r--r-- | src/devices/bus/isa/wss.cpp | 73 | ||||
| -rw-r--r-- | src/devices/bus/isa/wss.h | 40 | ||||
| -rw-r--r-- | src/mame/pc/conliner.cpp | 3 |
5 files changed, 119 insertions, 1 deletions
diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index c1e0d0c1c1f..bbf5047396d 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -2973,6 +2973,8 @@ if BUSES["ISA"] then MAME_DIR .. "src/devices/bus/isa/wd1007a.h", MAME_DIR .. "src/devices/bus/isa/wdxt_gen.cpp", MAME_DIR .. "src/devices/bus/isa/wdxt_gen.h", + MAME_DIR .. "src/devices/bus/isa/wss.cpp", + MAME_DIR .. "src/devices/bus/isa/wss.h", MAME_DIR .. "src/devices/bus/isa/xsu_cards.cpp", MAME_DIR .. "src/devices/bus/isa/xsu_cards.h", MAME_DIR .. "src/devices/bus/isa/xtide.cpp", diff --git a/src/devices/bus/isa/isa_cards.cpp b/src/devices/bus/isa/isa_cards.cpp index f16f94fda11..2befce31841 100644 --- a/src/devices/bus/isa/isa_cards.cpp +++ b/src/devices/bus/isa/isa_cards.cpp @@ -78,6 +78,7 @@ #include "sblaster.h" #include "ssi2001.h" #include "stereo_fx.h" +#include "wss.h" // network #include "3c503.h" @@ -233,6 +234,7 @@ void pc_isa16_cards(device_slot_interface &device) device.option_add("omti8621", ISA16_OMTI8621); device.option_add("lrk331", LRK331); device.option_add("hpblp", HPBLP); + device.option_add("wss", ISA16_WSS); // EISA cards // TODO: move to own block diff --git a/src/devices/bus/isa/wss.cpp b/src/devices/bus/isa/wss.cpp new file mode 100644 index 00000000000..24235784237 --- /dev/null +++ b/src/devices/bus/isa/wss.cpp @@ -0,0 +1,73 @@ +// license:BSD-3-Clause +// copyright-holders:Angelo Salese +/************************************************************************************************** + +Microsoft Windows Sound System based cards + +TODO: +- Untested; +- Configuration jumpers; + +**************************************************************************************************/ + +#include "emu.h" +#include "wss.h" + +#include "speaker.h" + +DEFINE_DEVICE_TYPE(ISA16_WSS, isa16_wss_device, "wss", "Microsoft Windows Sound System (original design)") + +isa16_wss_device::isa16_wss_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, ISA16_WSS, tag, owner, clock) + , device_isa16_card_interface(mconfig, *this) + , m_opl3(*this, "opl3") + , m_soundport(*this, "soundport") +{ +} + + +void isa16_wss_device::device_add_mconfig(machine_config &config) +{ + SPEAKER(config, "speaker", 2).front(); + + YMF262(config, m_opl3, XTAL(14'318'181)); + m_opl3->add_route(0, "speaker", 1.0, 0); + m_opl3->add_route(1, "speaker", 1.0, 1); + m_opl3->add_route(2, "speaker", 1.0, 0); + m_opl3->add_route(3, "speaker", 1.0, 1); + + AD1848(config, m_soundport, 0); + m_soundport->irq().set([this] (int state) { m_isa->irq7_w(state); }); + m_soundport->drq().set([this] (int state) { m_isa->drq0_w(state); }); + +} + +void isa16_wss_device::device_start() +{ + set_isa_device(); + m_isa->set_dma_channel(0, this, false); +} + +void isa16_wss_device::device_reset() +{ + remap(AS_IO, 0, 0xffff); +} + +void isa16_wss_device::remap(int space_id, offs_t start, offs_t end) +{ + if (space_id == AS_IO) + { + m_isa->install_device(0x0220, 0x022f, *this, &isa16_wss_device::host_io); + + m_isa->install_device(0x0388, 0x038b, read8sm_delegate(*m_opl3, FUNC(ymf262_device::read)), write8sm_delegate(*m_opl3, FUNC(ymf262_device::write))); + + m_isa->install_device(0x0534, 0x0537, read8sm_delegate(*m_soundport, FUNC(ad1848_device::read)), write8sm_delegate(*m_soundport, FUNC(ad1848_device::write))); + } +} + +void isa16_wss_device::host_io(address_map &map) +{ + map(0x00, 0x03).rw(m_opl3, FUNC(ymf262_device::read), FUNC(ymf262_device::write)); + map(0x04, 0x07).rw(m_soundport, FUNC(ad1848_device::read), FUNC(ad1848_device::write)); + map(0x08, 0x09).rw(m_opl3, FUNC(ymf262_device::read), FUNC(ymf262_device::write)); +} diff --git a/src/devices/bus/isa/wss.h b/src/devices/bus/isa/wss.h new file mode 100644 index 00000000000..1fa951a33e3 --- /dev/null +++ b/src/devices/bus/isa/wss.h @@ -0,0 +1,40 @@ +// license:BSD-3-Clause +// copyright-holders:Angelo Salese + +#ifndef MAME_BUS_ISA_WSS_H +#define MAME_BUS_ISA_WSS_H + +#pragma once + +#include "isa.h" +#include "sound/ad1848.h" +#include "sound/ymopl.h" + +class isa16_wss_device : public device_t, + public device_isa16_card_interface +{ +public: + isa16_wss_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + static constexpr feature_type imperfect_features() { return feature::SOUND; } + +protected: + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; + + virtual void device_add_mconfig(machine_config &config) override ATTR_COLD; + // virtual ioport_constructor device_input_ports() const override ATTR_COLD; + + virtual void remap(int space_id, offs_t start, offs_t end) override; + +private: + required_device<ymf262_device> m_opl3; + required_device<ad1848_device> m_soundport; + + void host_io(address_map &map); +}; + + +DECLARE_DEVICE_TYPE(ISA16_WSS, isa16_wss_device) + +#endif // MAME_BUS_ISA_WSS_H diff --git a/src/mame/pc/conliner.cpp b/src/mame/pc/conliner.cpp index 6ecdd8974cb..db440e79d8e 100644 --- a/src/mame/pc/conliner.cpp +++ b/src/mame/pc/conliner.cpp @@ -6,7 +6,7 @@ The machines need an online server to work, they won't boot up the games without it. More info: https://www.recreativas.org/onliner-6342-comatel - -Gigabyte GA-7VKMP Rev 3.4 motherboard (VIA KM266, VIA T8235, IT8705F, RTL8100BL, ALC650, etc.). + -Gigabyte GA-7VKMP Rev 3.4 motherboard (VIA VT8375 KM266, VIA VT8235, IT8705F, RTL8100BL, ALC650, etc.). -256MB RAM PC2700 DDR -AMD Athlon AXDA1800DLT3C processor. -ATI Rage 128 Pro 32MB AGP video. @@ -75,6 +75,7 @@ INPUT_PORTS_END void conliner_state::conliner(machine_config &config) { + // Socket A PGA462 PENTIUM(config, m_maincpu, 166'000'000); // Actually an AMD Athlon AXDA1800DLT3C m_maincpu->set_addrmap(AS_PROGRAM, &conliner_state::mem_map); |
