From 5836d9e48b934d624338a882615d74e6d6a66127 Mon Sep 17 00:00:00 2001 From: Brandon Munger Date: Thu, 29 Jun 2017 20:11:21 -0400 Subject: r9751: Add initial SMIOC device (#2423) --- scripts/src/machine.lua | 12 ++++ scripts/target/mame/mess.lua | 1 + src/devices/machine/smioc.cpp | 127 ++++++++++++++++++++++++++++++++++++++++++ src/devices/machine/smioc.h | 47 ++++++++++++++++ src/mame/drivers/r9751.cpp | 6 ++ 5 files changed, 193 insertions(+) create mode 100644 src/devices/machine/smioc.cpp create mode 100644 src/devices/machine/smioc.h 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 m_smioccpu; + required_shared_ptr 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 m_maincpu; required_device m_pdc; + required_device m_smioc; required_device m_wd33c93; required_device m_terminal; required_shared_ptr 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)) -- cgit v1.2.3