ds128x.cpp: add device ds12885ext same as ds12885 but 256 bytes ram (nw)

This commit is contained in:
yz70s 2019-01-04 20:30:21 +01:00
parent fc82839871
commit ab7af50b13
2 changed files with 81 additions and 2 deletions

View File

@ -10,7 +10,12 @@ DEFINE_DEVICE_TYPE(DS12885, ds12885_device, "ds12885", "DS12885 RTC/NVRAM")
//-------------------------------------------------
ds12885_device::ds12885_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: mc146818_device(mconfig, DS12885, tag, owner, clock)
: ds12885_device(mconfig, DS12885, tag, owner, clock)
{
}
ds12885_device::ds12885_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: mc146818_device(mconfig, type, tag, owner, clock)
{
}
@ -23,3 +28,54 @@ int ds12885_device::get_timer_bypass()
return 22; // No tick
}
DEFINE_DEVICE_TYPE(DS12885EXT, ds12885ext_device, "ds12885ext", "DS12885 RTC/NVRAM size 256 bytes")
//-------------------------------------------------
// ds12885ext_device - constructor
//-------------------------------------------------
ds12885ext_device::ds12885ext_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: ds12885_device(mconfig, DS12885EXT, tag, owner, clock)
{
}
//-------------------------------------------------
// ds12885ext_device - handlers that allow acces to extended memory size
//-------------------------------------------------
READ8_MEMBER(ds12885ext_device::read_extended)
{
switch (offset)
{
case 0:
case 1:
return read(space, offset, mem_mask);
break;
case 2:
case 3:
return read(space, offset - 2, mem_mask);
break;
default:
return 0xff;
}
}
WRITE8_MEMBER(ds12885ext_device::write_extended)
{
switch (offset)
{
case 0:
write(space, offset, data & 127, mem_mask);
break;
case 1:
write(space, offset, data, mem_mask);
break;
case 2:
write(space, offset - 2, data, mem_mask);
break;
case 3:
write(space, offset - 2, data, mem_mask);
break;
}
}

View File

@ -8,13 +8,17 @@
#define MCFG_DS12885_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, DS12885, XTAL(32'768))
// ======================> mc146818_device
#define MCFG_DS12885EXT_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, DS12885EXT, XTAL(32'768))
// ======================> ds12885_device
class ds12885_device : public mc146818_device
{
public:
// construction/destruction
ds12885_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 32'768);
ds12885_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock = 32'768);
protected:
virtual int data_size() override { return 128; }
@ -24,4 +28,23 @@ protected:
// device type definition
DECLARE_DEVICE_TYPE(DS12885, ds12885_device)
// ======================> ds12885ext_device
class ds12885ext_device : public ds12885_device
{
public:
// construction/destruction
ds12885ext_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 32'768);
// read/write access to extended ram
DECLARE_READ8_MEMBER(read_extended);
DECLARE_WRITE8_MEMBER(write_extended);
protected:
virtual int data_size() override { return 256; }
};
// device type definition
DECLARE_DEVICE_TYPE(DS12885EXT, ds12885ext_device)
#endif // MAME_MACHINE_DS128X_H