mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
r9751: Add initial SMIOC device (#2423)
This commit is contained in:
parent
cd1cda097f
commit
5836d9e48b
@ -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
|
||||
|
@ -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
|
||||
|
127
src/devices/machine/smioc.cpp
Normal file
127
src/devices/machine/smioc.cpp
Normal file
@ -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();
|
||||
}
|
47
src/devices/machine/smioc.h
Normal file
47
src/devices/machine/smioc.h
Normal file
@ -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
|
@ -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))
|
||||
|
Loading…
Reference in New Issue
Block a user