Added actual device files, fixed space data map as well

This commit is contained in:
angelosa 2017-01-01 01:59:40 +01:00
parent 0387005c1e
commit 57406d3ba5
5 changed files with 172 additions and 5 deletions

View File

@ -599,7 +599,7 @@ static ADDRESS_MAP_START( namcos2_68k_default_cpu_board_am, AS_PROGRAM, 16, namc
AM_RANGE(0x440000, 0x44ffff) AM_READWRITE(paletteram_word_r,paletteram_word_w) AM_SHARE("paletteram")
AM_RANGE(0x460000, 0x460fff) AM_READWRITE(dpram_word_r,dpram_word_w)
AM_RANGE(0x468000, 0x468fff) AM_READWRITE(dpram_word_r,dpram_word_w) /* mirror */
AM_RANGE(0x480000, 0x483fff) AM_DEVICE("sci", namco_c139_device, ram_map)
AM_RANGE(0x480000, 0x483fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w)
AM_RANGE(0x4a0000, 0x4a000f) AM_DEVICE("sci", namco_c139_device, regs_map)
ADDRESS_MAP_END

View File

@ -1252,7 +1252,7 @@ static ADDRESS_MAP_START( common_map, AS_PROGRAM, 16, namcos21_state )
AM_RANGE(0x800000, 0x8fffff) AM_ROM AM_REGION("data", 0)
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVICE("sci", namco_c139_device, ram_map)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w)
AM_RANGE(0xb80000, 0xb8000f) AM_DEVICE("sci", namco_c139_device, regs_map)
AM_RANGE(0xc00000, 0xcfffff) AM_ROM AM_MIRROR(0x100000) AM_REGION("edata", 0)
ADDRESS_MAP_END
@ -1481,7 +1481,7 @@ static ADDRESS_MAP_START( winrun_master_map, AS_PROGRAM, 16, namcos21_state )
AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("data", 0)
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVICE("sci", namco_c139_device, ram_map)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w)
AM_RANGE(0xb80000, 0xb8000f) AM_DEVICE("sci", namco_c139_device, regs_map)
ADDRESS_MAP_END
@ -1493,7 +1493,7 @@ static ADDRESS_MAP_START( winrun_slave_map, AS_PROGRAM, 16, namcos21_state )
AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("data", 0)
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVICE("sci", namco_c139_device, ram_map)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w)
AM_RANGE(0xb80000, 0xb8000f) AM_DEVICE("sci", namco_c139_device, regs_map)
ADDRESS_MAP_END
@ -1573,7 +1573,7 @@ static ADDRESS_MAP_START( driveyes_common_map, AS_PROGRAM, 16, namcos21_state )
AM_RANGE(0x800000, 0x8fffff) AM_ROM AM_REGION("data", 0)
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram")
AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVICE("sci", namco_c139_device, ram_map)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w)
AM_RANGE(0xb80000, 0xb8000f) AM_DEVICE("sci", namco_c139_device, regs_map)
ADDRESS_MAP_END

View File

@ -0,0 +1,98 @@
// license:BSD-3-Clause
// copyright-holders:<author_name>
/***************************************************************************
Namco C139 - Serial I/F Controller
TODO:
- Is RAM shared with a specific CPU other than master/slave?
***************************************************************************/
#include "emu.h"
#include "namco_c139.h"
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
// device type definition
const device_type NAMCO_C139 = &device_creator<namco_c139_device>;
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
static ADDRESS_MAP_START( data_map, AS_DATA, 16, namco_c139_device )
AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("sharedram")
ADDRESS_MAP_END
DEVICE_ADDRESS_MAP_START( regs_map, 16, namco_c139_device )
AM_RANGE(0x00, 0x00) AM_READ(status_r)
ADDRESS_MAP_END
//-------------------------------------------------
// namco_c139_device - constructor
//-------------------------------------------------
namco_c139_device::namco_c139_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, NAMCO_C139, "namco_c139_longname", tag, owner, clock, "namco_c139", __FILE__),
device_memory_interface(mconfig, *this),
m_space_config("data", ENDIANNESS_BIG, 16, 14, 0, *ADDRESS_MAP_NAME(data_map))
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void namco_c139_device::device_start()
{
m_ram = (uint16_t*)memshare("sharedram")->ptr();
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void namco_c139_device::device_reset()
{
}
//-------------------------------------------------
// memory_space_config - return a description of
// any address spaces owned by this device
//-------------------------------------------------
const address_space_config *namco_c139_device::memory_space_config(address_spacenum spacenum) const
{
return (spacenum == AS_DATA) ? &m_space_config : nullptr;
}
//**************************************************************************
// READ/WRITE HANDLERS
//**************************************************************************
READ16_MEMBER(namco_c139_device::ram_r)
{
return m_ram[offset];
}
WRITE16_MEMBER(namco_c139_device::ram_w)
{
COMBINE_DATA(&m_ram[offset]);
}
READ16_MEMBER(namco_c139_device::status_r)
{
return 4; // STATUS bit?
}

View File

@ -0,0 +1,67 @@
// license:BSD-3-Clause
// copyright-holders:<author_name>
/***************************************************************************
Template for skeleton device
***************************************************************************/
#pragma once
#ifndef __NAMCO_C139DEV_H__
#define __NAMCO_C139DEV_H__
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_NAMCO_C139_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, NAMCO_C139, 0)
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> namco_c139_device
class namco_c139_device : public device_t,
public device_memory_interface
{
public:
// construction/destruction
namco_c139_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// I/O operations
DECLARE_ADDRESS_MAP(regs_map, 16);
DECLARE_READ16_MEMBER(status_r);
DECLARE_READ16_MEMBER(ram_r);
DECLARE_WRITE16_MEMBER(ram_w);
protected:
// device-level overrides
// virtual void device_validity_check(validity_checker &valid) const;
virtual void device_start() override;
virtual void device_reset() override;
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_DATA) const override;
private:
const address_space_config m_space_config;
uint16_t* m_ram;
};
// device type definition
extern const device_type NAMCO_C139;
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
#endif

View File

@ -102,6 +102,8 @@ void namco_c148_device::device_start()
{
m_hostcpu = machine().device<cpu_device>(m_hostcpu_tag);
m_linked_c148 = machine().device<namco_c148_device>(m_linked_c148_tag);
assert(m_hostcpu != nullptr);
m_out_ext1_cb.resolve_safe();
m_out_ext2_cb.resolve_safe();