summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Brandon Munger <bmunger@users.noreply.github.com>2017-06-29 20:11:21 -0400
committer Vas Crabb <cuavas@users.noreply.github.com>2017-06-30 10:11:21 +1000
commit5836d9e48b934d624338a882615d74e6d6a66127 (patch)
tree14e923fa3d57cb33d8ab60e2aa5a11cf2306ee82
parentcd1cda097f8d51b2788ab18dffef16157be0934c (diff)
r9751: Add initial SMIOC device (#2423)
-rw-r--r--scripts/src/machine.lua12
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/devices/machine/smioc.cpp127
-rw-r--r--src/devices/machine/smioc.h47
-rw-r--r--src/mame/drivers/r9751.cpp6
5 files changed, 193 insertions, 0 deletions
diff --git a/scripts/src/machine.lua b/scripts/src/machine.lua
index 0b212b50d43..c1cc2afe1dc 100644
--- a/scripts/src/machine.lua
+++ b/scripts/src/machine.lua
@@ -3191,3 +3191,15 @@ if (MACHINES["K054321"]~=null) then
MAME_DIR .. "src/devices/machine/k054321.h",
}
end
+
+---------------------------------------------------
+--
+--@src/devices/machine/smioc.h,MACHINES["SMIOC"] = true
+---------------------------------------------------
+
+if (MACHINES["SMIOC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/smioc.cpp",
+ MAME_DIR .. "src/devices/machine/smioc.h",
+ }
+end
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 9bcef488593..2cedb3c22ab 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -534,6 +534,7 @@ MACHINES["SECFLASH"] = true
MACHINES["SEIBU_COP"] = true
--MACHINES["SERFLASH"] = true
MACHINES["SMC91C9X"] = true
+MACHINES["SMIOC"] = true
MACHINES["SMPC"] = true
MACHINES["STVCD"] = true
MACHINES["TC0091LVC"] = true
diff --git a/src/devices/machine/smioc.cpp b/src/devices/machine/smioc.cpp
new file mode 100644
index 00000000000..5ceabc2691e
--- /dev/null
+++ b/src/devices/machine/smioc.cpp
@@ -0,0 +1,127 @@
+// license:GPL-2.0+
+// copyright-holders:Brandon Munger
+/**********************************************************************
+
+ ROLM 9751 9005 System Monitor Input/Output Card emulation
+
+**********************************************************************/
+
+/*
+ Device SMIOC
+ Board Copyright - IBM Corp 1989 Made in USA
+
+ Labels:
+ * 98R0083
+ MN 90770AR
+
+ * EC# A65048R
+
+ Hardware:
+ * CPU - Intel N80C188 L0450591 @ ??MHz - U23
+ * MCU - Signetics SC87C451CCA68 220CP079109KA 97D8641 - U70
+ * DMA - KS82C37A - U46, U47, U48, U49, U50
+ * Memory - NEC D43256AGU-10LL 8948A9038 SRAM 32KB - U51
+ * Memory - Mitsubishi M5M187AJ 046101-35 SRAM 64K X 1?? - U37
+ Logic:
+ * U8 - 22V10-25JC
+ * U33 - 22V10-25JC
+ * U61 - 22V10-25JC
+ * U63 - 22V10-25JC
+ * U87 - 22V10-20JC
+ * U88 - 22V10-20JC
+ * U102 - 22V10-25JC
+ * U111 - 22V10-25JC
+
+ Switches:
+ * S1 - Board reset
+
+ Program Memory:
+ * 0x00000 - 0x07FFF : SRAM D43256AGU-10LL 32KB
+ * 0xF8000 - 0xFFFFF : ROM 27C256 PLCC32 32KB
+
+ IO Memory:
+ * Unknown
+
+*/
+
+#include "emu.h"
+#include "smioc.h"
+
+
+//**************************************************************************
+// MACROS / CONSTANTS
+//**************************************************************************
+
+#define I188_TAG "smioc_i188" // U23
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE(SMIOC, smioc_device, "rolm_smioc", "ROLM SMIOC")
+
+//-------------------------------------------------
+// ROM( SMIOC )
+//-------------------------------------------------
+
+ROM_START( smioc )
+ ROM_REGION( 0x8000, "rom", 0 )
+ ROM_LOAD( "smioc.27256.u65", 0x0000, 0x8000, CRC(25b93192) SHA1(8ee9879033623490ce6703ba5429af2b16dbae84) )
+ROM_END
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+const tiny_rom_entry *smioc_device::device_rom_region() const
+{
+ return ROM_NAME( smioc );
+}
+
+//-------------------------------------------------
+// ADDRESS_MAP( smioc_mem )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( smioc_mem, AS_PROGRAM, 8, smioc_device )
+ AM_RANGE(0x00000, 0x07FFF) AM_RAM AM_SHARE("smioc_ram")
+ AM_RANGE(0xF8000, 0xFFFFF) AM_ROM AM_REGION("rom", 0)
+ADDRESS_MAP_END
+
+MACHINE_CONFIG_MEMBER( smioc_device::device_add_mconfig )
+ /* CPU - Intel 80C188 */
+ MCFG_CPU_ADD(I188_TAG, I80188, XTAL_20MHz / 2) // Clock division unknown
+ MCFG_CPU_PROGRAM_MAP(smioc_mem)
+MACHINE_CONFIG_END
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// smioc_device - constructor
+//-------------------------------------------------
+
+smioc_device::smioc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, SMIOC, tag, owner, clock),
+ m_smioccpu(*this, I188_TAG),
+ m_smioc_ram(*this, "smioc_ram")
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void smioc_device::device_start()
+{
+}
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void smioc_device::device_reset()
+{
+ /* Reset CPU */
+ m_smioccpu->reset();
+}
diff --git a/src/devices/machine/smioc.h b/src/devices/machine/smioc.h
new file mode 100644
index 00000000000..96bd0fec22d
--- /dev/null
+++ b/src/devices/machine/smioc.h
@@ -0,0 +1,47 @@
+// license:GPL-2.0+
+// copyright-holders:Brandon Munger
+/**********************************************************************
+
+ ROLM 9751 9005 System Monitor Input/Ouput Card emulation
+
+**********************************************************************/
+
+#ifndef MAME_MACHINE_SMIOC_H
+#define MAME_MACHINE_SMIOC_H
+
+#pragma once
+
+#include "cpu/i86/i186.h"
+
+//**************************************************************************
+// MACROS / CONSTANTS
+//**************************************************************************
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> smioc_device
+
+class smioc_device : public device_t
+{
+public:
+ /* Constructor and Destructor */
+ smioc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+protected:
+ /* Device-level overrides */
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ /* Optional information overrides */
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+private:
+ /* Attached devices */
+ required_device<cpu_device> m_smioccpu;
+ required_shared_ptr<uint8_t> m_smioc_ram;
+};
+
+/* Device type */
+DECLARE_DEVICE_TYPE(SMIOC, smioc_device)
+
+#endif // MAME_MACHINE_SMIOC_H
diff --git a/src/mame/drivers/r9751.cpp b/src/mame/drivers/r9751.cpp
index bb98ef3e6b4..8a986ccfe13 100644
--- a/src/mame/drivers/r9751.cpp
+++ b/src/mame/drivers/r9751.cpp
@@ -56,6 +56,7 @@
#include "machine/wd33c93.h"
#include "machine/pdc.h"
+#include "machine/smioc.h"
#include "softlist.h"
#define TERMINAL_TAG "terminal"
@@ -77,6 +78,7 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_pdc(*this, "pdc"),
+ m_smioc(*this, "smioc"),
m_wd33c93(*this, "wd33c93"),
m_terminal(*this, TERMINAL_TAG),
m_main_ram(*this, "main_ram")
@@ -102,6 +104,7 @@ public:
private:
required_device<cpu_device> m_maincpu;
required_device<pdc_device> m_pdc;
+ required_device<smioc_device> m_smioc;
required_device<wd33c93_device> m_wd33c93;
required_device<generic_terminal_device> m_terminal;
required_shared_ptr<uint32_t> m_main_ram;
@@ -558,6 +561,9 @@ static MACHINE_CONFIG_START( r9751 )
MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(r9751_state, kbd_put))
+ /* i/o hardware */
+ MCFG_DEVICE_ADD("smioc", SMIOC, 0)
+
/* disk hardware */
MCFG_DEVICE_ADD("pdc", PDC, 0)
MCFG_PDC_R_CB(READ8(r9751_state, pdc_dma_r))