mirror of
https://github.com/holub/mame
synced 2025-10-06 09:00:04 +03:00
Added actual device files, fixed space data map as well
This commit is contained in:
parent
0387005c1e
commit
57406d3ba5
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
98
src/mame/machine/namco_c139.cpp
Normal file
98
src/mame/machine/namco_c139.cpp
Normal 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?
|
||||
}
|
67
src/mame/machine/namco_c139.h
Normal file
67
src/mame/machine/namco_c139.h
Normal 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
|
@ -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();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user