mirror of
https://github.com/holub/mame
synced 2025-06-07 21:33:45 +03:00
bus/cbus: add MIF-201 MIDI interface stub
This commit is contained in:
parent
8a250aded0
commit
b0613ccfab
@ -5288,6 +5288,8 @@ if (BUSES["CBUS"]~=null) then
|
|||||||
files {
|
files {
|
||||||
MAME_DIR .. "src/devices/bus/cbus/amd98.cpp",
|
MAME_DIR .. "src/devices/bus/cbus/amd98.cpp",
|
||||||
MAME_DIR .. "src/devices/bus/cbus/amd98.h",
|
MAME_DIR .. "src/devices/bus/cbus/amd98.h",
|
||||||
|
MAME_DIR .. "src/devices/bus/cbus/mif201.cpp",
|
||||||
|
MAME_DIR .. "src/devices/bus/cbus/mif201.h",
|
||||||
MAME_DIR .. "src/devices/bus/cbus/mpu_pc98.cpp",
|
MAME_DIR .. "src/devices/bus/cbus/mpu_pc98.cpp",
|
||||||
MAME_DIR .. "src/devices/bus/cbus/mpu_pc98.h",
|
MAME_DIR .. "src/devices/bus/cbus/mpu_pc98.h",
|
||||||
MAME_DIR .. "src/devices/bus/cbus/pc9801_26.cpp",
|
MAME_DIR .. "src/devices/bus/cbus/pc9801_26.cpp",
|
||||||
|
70
src/devices/bus/cbus/mif201.cpp
Normal file
70
src/devices/bus/cbus/mif201.cpp
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders: Angelo Salese
|
||||||
|
/**************************************************************************************************
|
||||||
|
|
||||||
|
MIF-201 MIDI interface
|
||||||
|
|
||||||
|
Bundled with Micro Musician VA
|
||||||
|
|
||||||
|
References:
|
||||||
|
- https://mamedev.emulab.it/kale/fast/files/micromusician_va.jpg
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
- evasive, needs manual, dip-switch sheet and PCB pictures;
|
||||||
|
|
||||||
|
**************************************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "mif201.h"
|
||||||
|
|
||||||
|
DEFINE_DEVICE_TYPE(MIF201, mif201_device, "mif201", "Micro Musician VA MIF-201 MIDI Interface")
|
||||||
|
|
||||||
|
mif201_device::mif201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
|
: device_t(mconfig, MIF201, tag, owner, clock)
|
||||||
|
, m_bus(*this, DEVICE_SELF_OWNER)
|
||||||
|
, m_uart(*this, "uart%u", 1U)
|
||||||
|
, m_pit(*this, "pit")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//void mif201_device::irq_out(int state)
|
||||||
|
//{
|
||||||
|
// m_bus->int_w<2>(state);
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
void mif201_device::device_add_mconfig(machine_config &config)
|
||||||
|
{
|
||||||
|
// TODO: unknown clocks
|
||||||
|
I8251(config, m_uart[0], 1021800);
|
||||||
|
|
||||||
|
I8251(config, m_uart[1], 1021800);
|
||||||
|
|
||||||
|
PIT8253(config, m_pit, 1021800);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mif201_device::device_start()
|
||||||
|
{
|
||||||
|
// sheet claims i8251-1 having swapped ports compared to i8251-2 but micromus just uses
|
||||||
|
// $e2d2 for control, assume typo.
|
||||||
|
m_bus->install_io(0xe2d0, 0xe2d3,
|
||||||
|
read8sm_delegate(*this, [this](offs_t offset) { return m_uart[0]->read(offset); }, "uart1_r"),
|
||||||
|
write8sm_delegate(*this, [this](offs_t offset, u8 data) { m_uart[0]->write(offset, data); }, "uart1_w")
|
||||||
|
);
|
||||||
|
m_bus->install_io(0xe4d0, 0xe4d3,
|
||||||
|
read8sm_delegate(*this, [this](offs_t offset) { return m_uart[1]->read(offset); }, "uart2_r"),
|
||||||
|
write8sm_delegate(*this, [this](offs_t offset, u8 data) { m_uart[1]->write(offset, data); }, "uart2_w")
|
||||||
|
);
|
||||||
|
m_bus->install_io(0xe6d0, 0xe6d3,
|
||||||
|
read8sm_delegate(*this, [this](offs_t offset) { return m_pit->read(offset); }, "pit_low_r"),
|
||||||
|
write8sm_delegate(*this, [this](offs_t offset, u8 data) { m_pit->write(offset, data); }, "pit_low_w")
|
||||||
|
);
|
||||||
|
m_bus->install_io(0xe7d0, 0xe7d3,
|
||||||
|
read8sm_delegate(*this, [this](offs_t offset) { return m_pit->read(offset | 2); }, "pit_high_r"),
|
||||||
|
write8sm_delegate(*this, [this](offs_t offset, u8 data) { m_pit->write(offset | 2, data); }, "pit_high_w")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mif201_device::device_reset()
|
||||||
|
{
|
||||||
|
}
|
46
src/devices/bus/cbus/mif201.h
Normal file
46
src/devices/bus/cbus/mif201.h
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders: Angelo Salese
|
||||||
|
#ifndef MAME_BUS_CBUS_MIF201_H
|
||||||
|
#define MAME_BUS_CBUS_MIF201_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "bus/cbus/pc9801_cbus.h"
|
||||||
|
#include "machine/i8251.h"
|
||||||
|
#include "machine/pit8253.h"
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// TYPE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
// ======================> mpu_pc98_device
|
||||||
|
|
||||||
|
class mif201_device : public device_t
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
mif201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
|
static constexpr feature_type unemulated_features() { return feature::SOUND; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_start() override ATTR_COLD;
|
||||||
|
virtual void device_reset() override ATTR_COLD;
|
||||||
|
|
||||||
|
// optional information overrides
|
||||||
|
virtual void device_add_mconfig(machine_config &config) override ATTR_COLD;
|
||||||
|
|
||||||
|
private:
|
||||||
|
required_device<pc9801_slot_device> m_bus;
|
||||||
|
required_device_array<i8251_device, 2> m_uart;
|
||||||
|
required_device<pit8253_device> m_pit;
|
||||||
|
|
||||||
|
// void map(address_map &map);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
DECLARE_DEVICE_TYPE(MIF201, mif201_device)
|
||||||
|
|
||||||
|
#endif // MAME_BUS_CBUS_MIF201_H
|
@ -5,17 +5,21 @@
|
|||||||
C-bus slot interface for PC-98xx family
|
C-bus slot interface for PC-98xx family
|
||||||
|
|
||||||
a.k.a. NEC version of the ISA bus.
|
a.k.a. NEC version of the ISA bus.
|
||||||
C-bus -> Card Bus
|
C-bus -> Compatible Bus
|
||||||
|
|
||||||
|
References:
|
||||||
|
- https://98epjunk.shakunage.net/sw/ext_card/ext_card.html
|
||||||
|
- https://ja.wikipedia.org/wiki/C%E3%83%90%E3%82%B9
|
||||||
|
- https://www.pc-9800.net/db2/db2_ga_index.htm
|
||||||
|
- http://ookumaneko.s1005.xrea.com/pcibios.htm (PCI era mapping)
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- stub interface, checkout what actually belongs here.
|
- stub interface, checkout what actually belongs here
|
||||||
Speculation is that C-bus has ROM / RAM slots always in the 0xc0000-0xdffff region,
|
|
||||||
and some opacity can be added if true.
|
|
||||||
- move pc9801_cbus_devices declaration from pc9801 driver in here;
|
- move pc9801_cbus_devices declaration from pc9801 driver in here;
|
||||||
- 8-bit I/O smearing should be handled here;
|
- 8-bit I/O smearing should be handled here;
|
||||||
- INT# should be handled here too;
|
- INT# should be handled here too;
|
||||||
- Best way to inform user when it tries to install incompatible boards?
|
- Best way to inform user when it tries to install incompatible boards?
|
||||||
- Support for PCI bridging on later machines (cfr. pc9801cx3);
|
- Support for PCI bridging on later machines (cfr. pc9821cx3);
|
||||||
|
|
||||||
**************************************************************************************************/
|
**************************************************************************************************/
|
||||||
|
|
||||||
|
@ -753,11 +753,11 @@ void pc88va_state::io_map(address_map &map)
|
|||||||
);
|
);
|
||||||
map(0x0540, 0x0547).umask16(0x00ff).lrw8(
|
map(0x0540, 0x0547).umask16(0x00ff).lrw8(
|
||||||
NAME([this] (offs_t offset) {
|
NAME([this] (offs_t offset) {
|
||||||
LOGGFXCTRL("PATRH%d R\n", offset);
|
LOGGFXCTRL("Multiplane PATRH%d R\n", offset);
|
||||||
return m_multiplane.patr[offset][1];
|
return m_multiplane.patr[offset][1];
|
||||||
}),
|
}),
|
||||||
NAME([this] (offs_t offset, u8 data) {
|
NAME([this] (offs_t offset, u8 data) {
|
||||||
LOGGFXCTRL("PATRH%d W %02x\n", offset, data);
|
LOGGFXCTRL("Multiplane PATRH%d W %02x\n", offset, data);
|
||||||
m_multiplane.patr[offset][1] = data;
|
m_multiplane.patr[offset][1] = data;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
@ -802,11 +802,11 @@ void pc88va_state::io_map(address_map &map)
|
|||||||
);
|
);
|
||||||
map(0x0590, 0x0593).umask16(0x00ff).lrw8(
|
map(0x0590, 0x0593).umask16(0x00ff).lrw8(
|
||||||
NAME([this] (offs_t offset) {
|
NAME([this] (offs_t offset) {
|
||||||
LOGGFXCTRL("Singleplane PATRL%d R\n", offset);
|
LOGGFXCTRL("Singleplane PATR%d R\n", offset);
|
||||||
return m_singleplane.patr[offset];
|
return m_singleplane.patr[offset];
|
||||||
}),
|
}),
|
||||||
NAME([this] (offs_t offset, u8 data) {
|
NAME([this] (offs_t offset, u8 data) {
|
||||||
LOGGFXCTRL("Singleplane PATRL%d W %02x\n", offset, data);
|
LOGGFXCTRL("Singleplane PATR%d W %02x\n", offset, data);
|
||||||
m_singleplane.patr[offset] = data;
|
m_singleplane.patr[offset] = data;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
@ -1265,6 +1265,7 @@ static void pc88va_cbus_devices(device_slot_interface &device)
|
|||||||
{
|
{
|
||||||
device.option_add("pc9801_55u", PC9801_55U);
|
device.option_add("pc9801_55u", PC9801_55U);
|
||||||
device.option_add("pc9801_55l", PC9801_55L);
|
device.option_add("pc9801_55l", PC9801_55L);
|
||||||
|
device.option_add("mif_201", MIF201);
|
||||||
device.option_add("mpu_pc98", MPU_PC98);
|
device.option_add("mpu_pc98", MPU_PC98);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,11 +29,12 @@
|
|||||||
#include "sound/ymopn.h"
|
#include "sound/ymopn.h"
|
||||||
|
|
||||||
//#include "bus/cbus/amd98.h"
|
//#include "bus/cbus/amd98.h"
|
||||||
|
#include "bus/cbus/mif201.h"
|
||||||
|
#include "bus/cbus/mpu_pc98.h"
|
||||||
//#include "bus/cbus/pc9801_26.h"
|
//#include "bus/cbus/pc9801_26.h"
|
||||||
#include "bus/cbus/pc9801_55.h"
|
#include "bus/cbus/pc9801_55.h"
|
||||||
//#include "bus/cbus/pc9801_86.h"
|
//#include "bus/cbus/pc9801_86.h"
|
||||||
//#include "bus/cbus/pc9801_118.h"
|
//#include "bus/cbus/pc9801_118.h"
|
||||||
#include "bus/cbus/mpu_pc98.h"
|
|
||||||
//#include "bus/cbus/sb16_ct2720.h"
|
//#include "bus/cbus/sb16_ct2720.h"
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user