mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
Created a PCCARD slot and Linear Flash Card for System 573. Uses bankdev.c for banking the onboard flash chips and the pccard slots. This adds an extra two calls to the memory system & intelfsh.c already called the memory system for accessing the data. [smf]
This commit is contained in:
parent
823fd8ceeb
commit
bbc6be589d
4
.gitattributes
vendored
4
.gitattributes
vendored
@ -1279,6 +1279,8 @@ src/emu/machine/ldv1000.c svneol=native#text/plain
|
||||
src/emu/machine/ldv1000.h svneol=native#text/plain
|
||||
src/emu/machine/ldvp931.c svneol=native#text/plain
|
||||
src/emu/machine/ldvp931.h svneol=native#text/plain
|
||||
src/emu/machine/linflash.c svneol=native#text/plain
|
||||
src/emu/machine/linflash.h svneol=native#text/plain
|
||||
src/emu/machine/m6m80011ap.c svneol=native#text/plain
|
||||
src/emu/machine/m6m80011ap.h svneol=native#text/plain
|
||||
src/emu/machine/matsucd.c svneol=native#text/plain
|
||||
@ -1349,6 +1351,8 @@ src/emu/machine/nvram.c svneol=native#text/plain
|
||||
src/emu/machine/nvram.h svneol=native#text/plain
|
||||
src/emu/machine/pc16552d.c svneol=native#text/plain
|
||||
src/emu/machine/pc16552d.h svneol=native#text/plain
|
||||
src/emu/machine/pccard.c svneol=native#text/plain
|
||||
src/emu/machine/pccard.h svneol=native#text/plain
|
||||
src/emu/machine/pcf8593.c svneol=native#text/plain
|
||||
src/emu/machine/pcf8593.h svneol=native#text/plain
|
||||
src/emu/machine/pci.c svneol=native#text/plain
|
||||
|
@ -217,6 +217,7 @@ EMUMACHINEOBJS = \
|
||||
$(EMUMACHINE)/ldstub.o \
|
||||
$(EMUMACHINE)/ldv1000.o \
|
||||
$(EMUMACHINE)/ldvp931.o \
|
||||
$(EMUMACHINE)/linflash.o \
|
||||
$(EMUMACHINE)/m6m80011ap.o \
|
||||
$(EMUMACHINE)/matsucd.o \
|
||||
$(EMUMACHINE)/mb14241.o \
|
||||
@ -252,6 +253,7 @@ EMUMACHINEOBJS = \
|
||||
$(EMUMACHINE)/nscsi_hd.o \
|
||||
$(EMUMACHINE)/nvram.o \
|
||||
$(EMUMACHINE)/pc16552d.o \
|
||||
$(EMUMACHINE)/pccard.o \
|
||||
$(EMUMACHINE)/pcf8593.o \
|
||||
$(EMUMACHINE)/pci.o \
|
||||
$(EMUMACHINE)/pckeybrd.o \
|
||||
|
208
src/emu/machine/linflash.c
Normal file
208
src/emu/machine/linflash.c
Normal file
@ -0,0 +1,208 @@
|
||||
#include "linflash.h"
|
||||
|
||||
/// figure out which games use 16mb and which use 32mb
|
||||
|
||||
linear_flash_card_device::linear_flash_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock,const char *shortname, const char *source) :
|
||||
device_t(mconfig, type, name, tag, owner, clock, shortname, source),
|
||||
device_memory_interface(mconfig, *this),
|
||||
device_slot_card_interface(mconfig, *this)
|
||||
{
|
||||
}
|
||||
|
||||
void linear_flash_card_device::device_start()
|
||||
{
|
||||
m_space = &space(AS_0);
|
||||
}
|
||||
|
||||
const address_space_config *linear_flash_card_device::memory_space_config( address_spacenum spacenum ) const
|
||||
{
|
||||
return ( spacenum == AS_0 ) ? &m_space_config : NULL;
|
||||
}
|
||||
|
||||
READ16_MEMBER( linear_flash_card_device::read_memory )
|
||||
{
|
||||
UINT16 data = m_space->read_word(offset * 2, mem_mask);
|
||||
//printf( "<%08x %04x %04x\n", offset, data, mem_mask );
|
||||
return data;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER( linear_flash_card_device::write_memory )
|
||||
{
|
||||
//printf( ">%08x %04x %04x\n", offset, data, mem_mask );
|
||||
m_space->write_word(offset * 2, data, mem_mask);
|
||||
}
|
||||
|
||||
|
||||
const device_type LINEAR_FLASH_16MB = &device_creator<linear_flash_card_16mb_device>;
|
||||
|
||||
static ADDRESS_MAP_START(linear_flash_card_16mb, AS_0, 16, linear_flash_card_16mb_device)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x00400000, 0x007fffff) AM_DEVREADWRITE8("2l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x00400000, 0x007fffff) AM_DEVREADWRITE8("2u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x00800000, 0x00bfffff) AM_DEVREADWRITE8("3l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x00800000, 0x00bfffff) AM_DEVREADWRITE8("3u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x00c00000, 0x00ffffff) AM_DEVREADWRITE8("4l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x00c00000, 0x00ffffff) AM_DEVREADWRITE8("4u", intelfsh8_device, read, write, 0xff00)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
linear_flash_card_16mb_device::linear_flash_card_16mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
linear_flash_card_device(mconfig, LINEAR_FLASH_16MB, "Linear Flash Card (16MB)", tag, owner, clock, "linearflash16mb", __FILE__)
|
||||
{
|
||||
m_space_config = address_space_config("memory", ENDIANNESS_LITTLE, 16, 26, 0, *ADDRESS_MAP_NAME( linear_flash_card_16mb ) );
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( linear_flash_card_16mb )
|
||||
MCFG_FUJITSU_29F016A_ADD("1l")
|
||||
MCFG_FUJITSU_29F016A_ADD("1u")
|
||||
MCFG_FUJITSU_29F016A_ADD("2l")
|
||||
MCFG_FUJITSU_29F016A_ADD("2u")
|
||||
MCFG_FUJITSU_29F016A_ADD("3l")
|
||||
MCFG_FUJITSU_29F016A_ADD("3u")
|
||||
MCFG_FUJITSU_29F016A_ADD("4l")
|
||||
MCFG_FUJITSU_29F016A_ADD("4u")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
machine_config_constructor linear_flash_card_16mb_device::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( linear_flash_card_16mb );
|
||||
}
|
||||
|
||||
|
||||
const device_type LINEAR_FLASH_32MB = &device_creator<linear_flash_card_32mb_device>;
|
||||
|
||||
static ADDRESS_MAP_START(linear_flash_card_32mb, AS_0, 16, linear_flash_card_32mb_device)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x00400000, 0x007fffff) AM_DEVREADWRITE8("2l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x00400000, 0x007fffff) AM_DEVREADWRITE8("2u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x00800000, 0x00bfffff) AM_DEVREADWRITE8("3l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x00800000, 0x00bfffff) AM_DEVREADWRITE8("3u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x00c00000, 0x00ffffff) AM_DEVREADWRITE8("4l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x00c00000, 0x00ffffff) AM_DEVREADWRITE8("4u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x01000000, 0x013fffff) AM_DEVREADWRITE8("5l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x01000000, 0x013fffff) AM_DEVREADWRITE8("5u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x01400000, 0x017fffff) AM_DEVREADWRITE8("6l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x01400000, 0x017fffff) AM_DEVREADWRITE8("6u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x01800000, 0x01bfffff) AM_DEVREADWRITE8("7l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x01800000, 0x01bfffff) AM_DEVREADWRITE8("7u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x01c00000, 0x01ffffff) AM_DEVREADWRITE8("8l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x01c00000, 0x01ffffff) AM_DEVREADWRITE8("8u", intelfsh8_device, read, write, 0xff00)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
linear_flash_card_32mb_device::linear_flash_card_32mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
linear_flash_card_device(mconfig, LINEAR_FLASH_32MB, "Linear Flash Card (32MB)", tag, owner, clock, "linearflash32mb", __FILE__)
|
||||
{
|
||||
m_space_config = address_space_config("memory", ENDIANNESS_LITTLE, 16, 26, 0, *ADDRESS_MAP_NAME( linear_flash_card_32mb ) );
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( linear_flash_card_32mb )
|
||||
MCFG_FUJITSU_29F016A_ADD("1l")
|
||||
MCFG_FUJITSU_29F016A_ADD("1u")
|
||||
MCFG_FUJITSU_29F016A_ADD("2l")
|
||||
MCFG_FUJITSU_29F016A_ADD("2u")
|
||||
MCFG_FUJITSU_29F016A_ADD("3l")
|
||||
MCFG_FUJITSU_29F016A_ADD("3u")
|
||||
MCFG_FUJITSU_29F016A_ADD("4l")
|
||||
MCFG_FUJITSU_29F016A_ADD("4u")
|
||||
MCFG_FUJITSU_29F016A_ADD("5l")
|
||||
MCFG_FUJITSU_29F016A_ADD("5u")
|
||||
MCFG_FUJITSU_29F016A_ADD("6l")
|
||||
MCFG_FUJITSU_29F016A_ADD("6u")
|
||||
MCFG_FUJITSU_29F016A_ADD("7l")
|
||||
MCFG_FUJITSU_29F016A_ADD("7u")
|
||||
MCFG_FUJITSU_29F016A_ADD("8l")
|
||||
MCFG_FUJITSU_29F016A_ADD("8u")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
machine_config_constructor linear_flash_card_32mb_device::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( linear_flash_card_32mb );
|
||||
}
|
||||
|
||||
|
||||
const device_type LINEAR_FLASH_64MB = &device_creator<linear_flash_card_64mb_device>;
|
||||
|
||||
static ADDRESS_MAP_START(linear_flash_card_64mb, AS_0, 16, linear_flash_card_64mb_device)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE8("1u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x00400000, 0x007fffff) AM_DEVREADWRITE8("2l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x00400000, 0x007fffff) AM_DEVREADWRITE8("2u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x00800000, 0x00bfffff) AM_DEVREADWRITE8("3l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x00800000, 0x00bfffff) AM_DEVREADWRITE8("3u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x00c00000, 0x00ffffff) AM_DEVREADWRITE8("4l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x00c00000, 0x00ffffff) AM_DEVREADWRITE8("4u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x01000000, 0x013fffff) AM_DEVREADWRITE8("5l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x01000000, 0x013fffff) AM_DEVREADWRITE8("5u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x01400000, 0x017fffff) AM_DEVREADWRITE8("6l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x01400000, 0x017fffff) AM_DEVREADWRITE8("6u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x01800000, 0x01bfffff) AM_DEVREADWRITE8("7l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x01800000, 0x01bfffff) AM_DEVREADWRITE8("7u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x01c00000, 0x01ffffff) AM_DEVREADWRITE8("8l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x01c00000, 0x01ffffff) AM_DEVREADWRITE8("8u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x02000000, 0x023fffff) AM_DEVREADWRITE8("9l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x02000000, 0x023fffff) AM_DEVREADWRITE8("9u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x02400000, 0x027fffff) AM_DEVREADWRITE8("10l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x02400000, 0x027fffff) AM_DEVREADWRITE8("10u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x02800000, 0x02bfffff) AM_DEVREADWRITE8("11l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x02800000, 0x02bfffff) AM_DEVREADWRITE8("11u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x02c00000, 0x02ffffff) AM_DEVREADWRITE8("12l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x02c00000, 0x02ffffff) AM_DEVREADWRITE8("12u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x03000000, 0x033fffff) AM_DEVREADWRITE8("13l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x03000000, 0x033fffff) AM_DEVREADWRITE8("13u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x03400000, 0x037fffff) AM_DEVREADWRITE8("14l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x03400000, 0x037fffff) AM_DEVREADWRITE8("14u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x03800000, 0x03bfffff) AM_DEVREADWRITE8("15l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x03800000, 0x03bfffff) AM_DEVREADWRITE8("15u", intelfsh8_device, read, write, 0xff00)
|
||||
AM_RANGE(0x03c00000, 0x03ffffff) AM_DEVREADWRITE8("16l", intelfsh8_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x03c00000, 0x03ffffff) AM_DEVREADWRITE8("16u", intelfsh8_device, read, write, 0xff00)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
linear_flash_card_64mb_device::linear_flash_card_64mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
linear_flash_card_device(mconfig, LINEAR_FLASH_64MB, "Linear Flash Card (64MB)", tag, owner, clock, "linearflash64mb", __FILE__)
|
||||
{
|
||||
m_space_config = address_space_config("memory", ENDIANNESS_LITTLE, 16, 26, 0, *ADDRESS_MAP_NAME( linear_flash_card_64mb ) );
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( linear_flash_card_64mb )
|
||||
MCFG_FUJITSU_29F016A_ADD("1l")
|
||||
MCFG_FUJITSU_29F016A_ADD("1u")
|
||||
MCFG_FUJITSU_29F016A_ADD("2l")
|
||||
MCFG_FUJITSU_29F016A_ADD("2u")
|
||||
MCFG_FUJITSU_29F016A_ADD("3l")
|
||||
MCFG_FUJITSU_29F016A_ADD("3u")
|
||||
MCFG_FUJITSU_29F016A_ADD("4l")
|
||||
MCFG_FUJITSU_29F016A_ADD("4u")
|
||||
MCFG_FUJITSU_29F016A_ADD("5l")
|
||||
MCFG_FUJITSU_29F016A_ADD("5u")
|
||||
MCFG_FUJITSU_29F016A_ADD("6l")
|
||||
MCFG_FUJITSU_29F016A_ADD("6u")
|
||||
MCFG_FUJITSU_29F016A_ADD("7l")
|
||||
MCFG_FUJITSU_29F016A_ADD("7u")
|
||||
MCFG_FUJITSU_29F016A_ADD("8l")
|
||||
MCFG_FUJITSU_29F016A_ADD("8u")
|
||||
MCFG_FUJITSU_29F016A_ADD("9l")
|
||||
MCFG_FUJITSU_29F016A_ADD("9u")
|
||||
MCFG_FUJITSU_29F016A_ADD("10l")
|
||||
MCFG_FUJITSU_29F016A_ADD("10u")
|
||||
MCFG_FUJITSU_29F016A_ADD("11l")
|
||||
MCFG_FUJITSU_29F016A_ADD("11u")
|
||||
MCFG_FUJITSU_29F016A_ADD("12l")
|
||||
MCFG_FUJITSU_29F016A_ADD("12u")
|
||||
MCFG_FUJITSU_29F016A_ADD("13l")
|
||||
MCFG_FUJITSU_29F016A_ADD("13u")
|
||||
MCFG_FUJITSU_29F016A_ADD("14l")
|
||||
MCFG_FUJITSU_29F016A_ADD("14u")
|
||||
MCFG_FUJITSU_29F016A_ADD("15l")
|
||||
MCFG_FUJITSU_29F016A_ADD("15u")
|
||||
MCFG_FUJITSU_29F016A_ADD("16l")
|
||||
MCFG_FUJITSU_29F016A_ADD("16u")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
machine_config_constructor linear_flash_card_64mb_device::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( linear_flash_card_64mb );
|
||||
}
|
63
src/emu/machine/linflash.h
Normal file
63
src/emu/machine/linflash.h
Normal file
@ -0,0 +1,63 @@
|
||||
#include "emu.h"
|
||||
#include "intelfsh.h"
|
||||
#include "machine/pccard.h"
|
||||
|
||||
class linear_flash_card_device : public device_t,
|
||||
public pccard_interface,
|
||||
public device_memory_interface,
|
||||
public device_slot_card_interface
|
||||
{
|
||||
public:
|
||||
virtual DECLARE_READ16_MEMBER(read_memory);
|
||||
virtual DECLARE_WRITE16_MEMBER(write_memory);
|
||||
|
||||
protected:
|
||||
linear_flash_card_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock,const char *shortname = "", const char *source = __FILE__);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
|
||||
// device_memory_interface overrides
|
||||
virtual const address_space_config *memory_space_config( address_spacenum spacenum = AS_0 ) const;
|
||||
|
||||
address_space_config m_space_config;
|
||||
address_space *m_space;
|
||||
};
|
||||
|
||||
|
||||
extern const device_type LINEAR_FLASH_16MB;
|
||||
|
||||
class linear_flash_card_16mb_device : public linear_flash_card_device
|
||||
{
|
||||
public:
|
||||
linear_flash_card_16mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
};
|
||||
|
||||
|
||||
extern const device_type LINEAR_FLASH_32MB;
|
||||
|
||||
class linear_flash_card_32mb_device : public linear_flash_card_device
|
||||
{
|
||||
public:
|
||||
linear_flash_card_32mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
};
|
||||
|
||||
extern const device_type LINEAR_FLASH_64MB;
|
||||
|
||||
class linear_flash_card_64mb_device : public linear_flash_card_device
|
||||
{
|
||||
public:
|
||||
linear_flash_card_64mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
};
|
74
src/emu/machine/pccard.c
Normal file
74
src/emu/machine/pccard.c
Normal file
@ -0,0 +1,74 @@
|
||||
#include "pccard.h"
|
||||
|
||||
READ16_MEMBER( pccard_interface::read_memory )
|
||||
{
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER( pccard_interface::write_memory )
|
||||
{
|
||||
}
|
||||
|
||||
READ16_MEMBER( pccard_interface::read_reg )
|
||||
{
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER( pccard_interface::write_reg )
|
||||
{
|
||||
}
|
||||
|
||||
const device_type PCCARD_SLOT = &device_creator<pccard_slot_device>;
|
||||
|
||||
pccard_slot_device::pccard_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
device_t(mconfig, PCCARD_SLOT, "PCCARD SLOT", tag, owner, clock, "pccard", __FILE__),
|
||||
device_slot_interface(mconfig, *this),
|
||||
m_pccard(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
void pccard_slot_device::device_start()
|
||||
{
|
||||
m_pccard = dynamic_cast<pccard_interface *>(get_card_device());
|
||||
}
|
||||
|
||||
READ_LINE_MEMBER(pccard_slot_device::read_line_inserted)
|
||||
{
|
||||
return m_pccard != NULL;
|
||||
}
|
||||
|
||||
READ16_MEMBER( pccard_slot_device::read_memory )
|
||||
{
|
||||
if( m_pccard != NULL )
|
||||
{
|
||||
return m_pccard->read_memory( space, offset, mem_mask );
|
||||
}
|
||||
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER( pccard_slot_device::write_memory )
|
||||
{
|
||||
if( m_pccard != NULL )
|
||||
{
|
||||
m_pccard->write_memory( space, offset, data, mem_mask );
|
||||
}
|
||||
}
|
||||
|
||||
READ16_MEMBER( pccard_slot_device::read_reg )
|
||||
{
|
||||
if( m_pccard != NULL )
|
||||
{
|
||||
return m_pccard->read_reg( space, offset, mem_mask );
|
||||
}
|
||||
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER( pccard_slot_device::write_reg )
|
||||
{
|
||||
if( m_pccard != NULL )
|
||||
{
|
||||
m_pccard->write_reg( space, offset, data, mem_mask );
|
||||
}
|
||||
}
|
32
src/emu/machine/pccard.h
Normal file
32
src/emu/machine/pccard.h
Normal file
@ -0,0 +1,32 @@
|
||||
#include "emu.h"
|
||||
|
||||
class pccard_interface
|
||||
{
|
||||
public:
|
||||
virtual DECLARE_READ16_MEMBER(read_memory);
|
||||
virtual DECLARE_READ16_MEMBER(read_reg);
|
||||
virtual DECLARE_WRITE16_MEMBER(write_memory);
|
||||
virtual DECLARE_WRITE16_MEMBER(write_reg);
|
||||
};
|
||||
|
||||
extern const device_type PCCARD_SLOT;
|
||||
|
||||
class pccard_slot_device : public device_t,
|
||||
public device_slot_interface
|
||||
{
|
||||
public:
|
||||
pccard_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
DECLARE_READ_LINE_MEMBER(read_line_inserted);
|
||||
DECLARE_READ16_MEMBER(read_memory);
|
||||
DECLARE_READ16_MEMBER(read_reg);
|
||||
DECLARE_WRITE16_MEMBER(write_memory);
|
||||
DECLARE_WRITE16_MEMBER(write_reg);
|
||||
|
||||
protected:
|
||||
virtual void device_start();
|
||||
|
||||
private:
|
||||
// internal state
|
||||
pccard_interface *m_pccard;
|
||||
};
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user