summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2013-06-10 13:43:50 +0000
committer Curt Coder <curtcoder@mail.com>2013-06-10 13:43:50 +0000
commit36198d216962174fbada541df0448e9118d4d5c1 (patch)
treef8d3d39669153bae03cb419ebcd8cecfb866673f
parentab3134c6962097cbe7477182cddbf19ca2df2066 (diff)
upd1990a: devcb2. (nw)
-rw-r--r--src/emu/machine/upd1990a.c114
-rw-r--r--src/emu/machine/upd1990a.h92
-rw-r--r--src/mess/drivers/apc.c8
-rw-r--r--src/mess/drivers/kyocera.c14
-rw-r--r--src/mess/drivers/pc1500.c9
-rw-r--r--src/mess/drivers/pc8001.c12
-rw-r--r--src/mess/drivers/pc8401a.c12
-rw-r--r--src/mess/drivers/pc8801.c12
-rw-r--r--src/mess/drivers/pc9801.c14
-rw-r--r--src/mess/drivers/prof80.c13
-rw-r--r--src/mess/machine/a2thunderclock.c8
-rw-r--r--src/mess/machine/s100_wunderbus.c8
12 files changed, 111 insertions, 205 deletions
diff --git a/src/emu/machine/upd1990a.c b/src/emu/machine/upd1990a.c
index ebbadd50c0c..2dc6e3565da 100644
--- a/src/emu/machine/upd1990a.c
+++ b/src/emu/machine/upd1990a.c
@@ -12,17 +12,13 @@
TODO:
- set tp = 64 Hz when out of test mode
- - test mode is mostly untested (is used by MS-DOS 6.2x in PC-98xx)
+ - test mode is mostly untested (is used by MS-DOS 6.2x in PC-98xx, and neogeo)
*/
#include "upd1990a.h"
-// device type definition
-const device_type UPD1990A = &device_creator<upd1990a_device>;
-const device_type UPD4990A = &device_creator<upd4990a_device>;
-
//**************************************************************************
// MACROS / CONSTANTS
@@ -31,18 +27,14 @@ const device_type UPD4990A = &device_creator<upd4990a_device>;
#define LOG 0
-// operating modes
-enum
-{
- MODE_REGISTER_HOLD = 0,
- MODE_SHIFT,
- MODE_TIME_SET,
- MODE_TIME_READ,
- MODE_TP_64HZ_SET,
- MODE_TP_256HZ_SET,
- MODE_TP_2048HZ_SET,
- MODE_TEST
-};
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+// device type definition
+const device_type UPD1990A = &device_creator<upd1990a_device>;
+const device_type UPD4990A = &device_creator<upd4990a_device>;
@@ -54,61 +46,43 @@ enum
// upd1990a_device - constructor
//-------------------------------------------------
-upd1990a_rtc_device::upd1990a_rtc_device(const machine_config &mconfig, device_type type, const char* name, const char *tag, device_t *owner, UINT32 clock)
+upd1990a_device::upd1990a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant)
: device_t(mconfig, type, name, tag, owner, clock),
device_rtc_interface(mconfig, *this),
+ m_write_data(*this),
+ m_write_tp(*this),
m_data_out(0),
m_c(0),
- m_clk(0)
+ m_clk(0),
+ m_variant(variant)
{
}
-
upd1990a_device::upd1990a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : upd1990a_rtc_device(mconfig, UPD1990A, "uPD1990A", tag, owner, clock)
+ : device_t(mconfig, UPD1990A, "uPD1990A", tag, owner, clock),
+ device_rtc_interface(mconfig, *this),
+ m_write_data(*this),
+ m_write_tp(*this),
+ m_data_out(0),
+ m_c(0),
+ m_clk(0),
+ m_variant(TYPE_1990A)
{
- m_device_type = TYPE_UPD1990A;
}
-
upd4990a_device::upd4990a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : upd1990a_rtc_device(mconfig, UPD4990A, "uPD4990A", tag, owner, clock)
-{
- m_device_type = TYPE_UPD4990A;
-}
-
-
-//-------------------------------------------------
-// device_config_complete - perform any
-// operations now that the configuration is
-// complete
-//-------------------------------------------------
-
-void upd1990a_rtc_device::device_config_complete()
-{
- // inherit a copy of the static data
- const upd1990a_interface *intf = reinterpret_cast<const upd1990a_interface *>(static_config());
- if (intf != NULL)
- *static_cast<upd1990a_interface *>(this) = *intf;
-
- // or initialize to defaults if none provided
- else
- {
- memset(&m_out_data_cb, 0, sizeof(m_out_data_cb));
- memset(&m_out_tp_cb, 0, sizeof(m_out_tp_cb));
- }
-}
+ : upd1990a_device(mconfig, UPD4990A, "uPD4990A", tag, owner, clock, TYPE_4990A) { }
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void upd1990a_rtc_device::device_start()
+void upd1990a_device::device_start()
{
// resolve callbacks
- m_out_data_func.resolve(m_out_data_cb, *this);
- m_out_tp_func.resolve(m_out_tp_cb, *this);
+ m_write_data.resolve_safe();
+ m_write_tp.resolve_safe();
// allocate timers
m_timer_clock = timer_alloc(TIMER_CLOCK);
@@ -136,7 +110,7 @@ void upd1990a_rtc_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void upd1990a_rtc_device::device_reset()
+void upd1990a_device::device_reset()
{
m_tp = 0;
m_c_unlatched = 0;
@@ -148,7 +122,7 @@ void upd1990a_rtc_device::device_reset()
// device_timer - handler timer events
//-------------------------------------------------
-void upd1990a_rtc_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void upd1990a_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
switch (id)
{
@@ -161,7 +135,7 @@ void upd1990a_rtc_device::device_timer(emu_timer &timer, device_timer_id id, int
if (LOG) logerror("uPD1990A '%s' TP %u\n", tag(), m_tp);
- m_out_tp_func(m_tp);
+ m_write_tp(m_tp);
break;
case TIMER_DATA_OUT:
@@ -169,7 +143,7 @@ void upd1990a_rtc_device::device_timer(emu_timer &timer, device_timer_id id, int
if (LOG) logerror("uPD1990A '%s' DATA OUT TICK %u\n", tag(), m_data_out);
- m_out_data_func(m_data_out);
+ m_write_data(m_data_out);
break;
case TIMER_TEST_MODE:
@@ -213,7 +187,7 @@ void upd1990a_rtc_device::device_timer(emu_timer &timer, device_timer_id id, int
// rtc_clock_updated -
//-------------------------------------------------
-void upd1990a_rtc_device::rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second)
+void upd1990a_device::rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second)
{
m_time_counter[0] = convert_to_bcd(second);
m_time_counter[1] = convert_to_bcd(minute);
@@ -227,7 +201,7 @@ void upd1990a_rtc_device::rtc_clock_updated(int year, int month, int day, int da
// oe_w -
//-------------------------------------------------
-WRITE_LINE_MEMBER( upd1990a_rtc_device::oe_w )
+WRITE_LINE_MEMBER( upd1990a_device::oe_w )
{
if (LOG) logerror("uPD1990A '%s' OE %u\n", tag(), state);
@@ -239,7 +213,7 @@ WRITE_LINE_MEMBER( upd1990a_rtc_device::oe_w )
// cs_w -
//-------------------------------------------------
-WRITE_LINE_MEMBER( upd1990a_rtc_device::cs_w )
+WRITE_LINE_MEMBER( upd1990a_device::cs_w )
{
if (LOG) logerror("uPD1990A '%s' CS %u\n", tag(), state);
@@ -251,7 +225,7 @@ WRITE_LINE_MEMBER( upd1990a_rtc_device::cs_w )
// stb_w -
//-------------------------------------------------
-WRITE_LINE_MEMBER( upd1990a_rtc_device::stb_w )
+WRITE_LINE_MEMBER( upd1990a_device::stb_w )
{
if (LOG) logerror("uPD1990A '%s' STB %u\n", tag(), state);
@@ -292,7 +266,7 @@ WRITE_LINE_MEMBER( upd1990a_rtc_device::stb_w )
/* output LSB of shift register */
m_data_out = BIT(m_shift_reg[0], 0);
- m_out_data_func(m_data_out);
+ m_write_data(m_data_out);
/* 32 Hz time pulse */
m_timer_tp->adjust(attotime::zero, 0, attotime::from_hz(32*2));
@@ -312,7 +286,7 @@ WRITE_LINE_MEMBER( upd1990a_rtc_device::stb_w )
/* output LSB of shift register */
m_data_out = BIT(m_shift_reg[0], 0);
- m_out_data_func(m_data_out);
+ m_write_data(m_data_out);
/* load shift register data into time counter */
for (int i = 0; i < 5; i++)
@@ -399,7 +373,7 @@ WRITE_LINE_MEMBER( upd1990a_rtc_device::stb_w )
// clk_w -
//-------------------------------------------------
-WRITE_LINE_MEMBER( upd1990a_rtc_device::clk_w )
+WRITE_LINE_MEMBER( upd1990a_device::clk_w )
{
if (LOG) logerror("uPD1990A '%s' CLK %u\n", tag(), state);
@@ -428,7 +402,7 @@ WRITE_LINE_MEMBER( upd1990a_rtc_device::clk_w )
if (LOG) logerror("uPD1990A '%s' DATA OUT %u\n", tag(), m_data_out);
- m_out_data_func(m_data_out);
+ m_write_data(m_data_out);
}
}
}
@@ -441,7 +415,7 @@ WRITE_LINE_MEMBER( upd1990a_rtc_device::clk_w )
// c0_w -
//-------------------------------------------------
-WRITE_LINE_MEMBER( upd1990a_rtc_device::c0_w )
+WRITE_LINE_MEMBER( upd1990a_device::c0_w )
{
if (LOG) logerror("uPD1990A '%s' C0 %u\n", tag(), state);
@@ -453,7 +427,7 @@ WRITE_LINE_MEMBER( upd1990a_rtc_device::c0_w )
// c1_w -
//-------------------------------------------------
-WRITE_LINE_MEMBER( upd1990a_rtc_device::c1_w )
+WRITE_LINE_MEMBER( upd1990a_device::c1_w )
{
if (LOG) logerror("uPD1990A '%s' C1 %u\n", tag(), state);
@@ -465,7 +439,7 @@ WRITE_LINE_MEMBER( upd1990a_rtc_device::c1_w )
// c2_w -
//-------------------------------------------------
-WRITE_LINE_MEMBER( upd1990a_rtc_device::c2_w )
+WRITE_LINE_MEMBER( upd1990a_device::c2_w )
{
if (LOG) logerror("uPD1990A '%s' C2 %u\n", tag(), state);
@@ -477,7 +451,7 @@ WRITE_LINE_MEMBER( upd1990a_rtc_device::c2_w )
// data_in_w -
//-------------------------------------------------
-WRITE_LINE_MEMBER( upd1990a_rtc_device::data_in_w )
+WRITE_LINE_MEMBER( upd1990a_device::data_in_w )
{
if (LOG) logerror("uPD1990A '%s' DATA IN %u\n", tag(), state);
@@ -489,7 +463,7 @@ WRITE_LINE_MEMBER( upd1990a_rtc_device::data_in_w )
// data_out_r -
//-------------------------------------------------
-READ_LINE_MEMBER( upd1990a_rtc_device::data_out_r )
+READ_LINE_MEMBER( upd1990a_device::data_out_r )
{
return m_data_out;
}
@@ -499,7 +473,7 @@ READ_LINE_MEMBER( upd1990a_rtc_device::data_out_r )
// tp_r -
//-------------------------------------------------
-READ_LINE_MEMBER( upd1990a_rtc_device::tp_r )
+READ_LINE_MEMBER( upd1990a_device::tp_r )
{
return m_tp;
}
diff --git a/src/emu/machine/upd1990a.h b/src/emu/machine/upd1990a.h
index 7078ed9569e..914f7290d77 100644
--- a/src/emu/machine/upd1990a.h
+++ b/src/emu/machine/upd1990a.h
@@ -27,22 +27,18 @@
//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-
-
-
-//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_UPD1990A_ADD(_tag, _clock, _config) \
- MCFG_DEVICE_ADD((_tag), UPD1990A, _clock) \
- MCFG_DEVICE_CONFIG(_config)
+#define MCFG_UPD1990A_ADD(_tag, _clock, _data, _tp) \
+ MCFG_DEVICE_ADD((_tag), UPD1990A, _clock) \
+ downcast<upd1990a_device *>(device)->set_data_callback(DEVCB2_##_data); \
+ downcast<upd1990a_device *>(device)->set_tp_callback(DEVCB2_##_tp);
-#define UPD1990A_INTERFACE(name) \
- const upd1990a_interface (name) =
+#define MCFG_UPD4990A_ADD(_tag, _clock, _data, _tp) \
+ MCFG_DEVICE_ADD((_tag), UPD4990A, _clock) \
+ downcast<upd1990a_device *>(device)->set_data_callback(DEVCB2_##_data); \
+ downcast<upd1990a_device *>(device)->set_tp_callback(DEVCB2_##_tp);
@@ -50,24 +46,18 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> upd1990a_interface
-
-struct upd1990a_interface
-{
- devcb_write_line m_out_data_cb;
- devcb_write_line m_out_tp_cb;
-};
-
-
// ======================> upd1990a_device
-class upd1990a_rtc_device : public device_t,
- public device_rtc_interface,
- public upd1990a_interface
+class upd1990a_device : public device_t,
+ public device_rtc_interface
{
public:
// construction/destruction
- upd1990a_rtc_device(const machine_config &mconfig, device_type type, const char* name, const char *tag, device_t *owner, UINT32 clock);
+ upd1990a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant);
+ upd1990a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ template<class _data> void set_data_callback(_data data) { m_write_data.set_callback(data); }
+ template<class _tp> void set_tp_callback(_tp tp) { m_write_tp.set_callback(tp); }
DECLARE_WRITE_LINE_MEMBER( oe_w );
DECLARE_WRITE_LINE_MEMBER( cs_w );
@@ -82,27 +72,42 @@ public:
protected:
// device-level overrides
- virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
// device_rtc_interface overrides
virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second);
- enum {
- TYPE_UPD1990A = 0,
- TYPE_UPD4990A
+
+ enum
+ {
+ TYPE_1990A = 0,
+ TYPE_4990A
};
- int m_device_type;
private:
- static const device_timer_id TIMER_CLOCK = 0;
- static const device_timer_id TIMER_TP = 1;
- static const device_timer_id TIMER_DATA_OUT = 2;
- static const device_timer_id TIMER_TEST_MODE = 3;
+ enum
+ {
+ TIMER_CLOCK,
+ TIMER_TP,
+ TIMER_DATA_OUT,
+ TIMER_TEST_MODE
+ };
+
+ enum
+ {
+ MODE_REGISTER_HOLD = 0,
+ MODE_SHIFT,
+ MODE_TIME_SET,
+ MODE_TIME_READ,
+ MODE_TP_64HZ_SET,
+ MODE_TP_256HZ_SET,
+ MODE_TP_2048HZ_SET,
+ MODE_TEST
+ };
- devcb_resolved_write_line m_out_data_func;
- devcb_resolved_write_line m_out_tp_func;
+ devcb2_write_line m_write_data;
+ devcb2_write_line m_write_tp;
UINT8 m_time_counter[5]; // time counter
UINT8 m_shift_reg[5]; // shift register
@@ -117,6 +122,8 @@ private:
int m_tp; // time pulse
int m_c_unlatched; // command waiting for STB
+ int m_variant;
+
// timers
emu_timer *m_timer_clock;
emu_timer *m_timer_tp;
@@ -124,21 +131,20 @@ private:
emu_timer *m_timer_test_mode;
};
-class upd1990a_device : public upd1990a_rtc_device
-{
-public:
- upd1990a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
-};
+// ======================> upd4990a_device
-class upd4990a_device : public upd1990a_rtc_device
+class upd4990a_device : public upd1990a_device
{
public:
upd4990a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
};
-// device type definition
+
+// device type definitions
extern const device_type UPD1990A;
extern const device_type UPD4990A;
+
+
#endif
diff --git a/src/mess/drivers/apc.c b/src/mess/drivers/apc.c
index d513d5fc5db..fd6ea279153 100644
--- a/src/mess/drivers/apc.c
+++ b/src/mess/drivers/apc.c
@@ -981,12 +981,6 @@ static I8237_INTERFACE( dmac_intf )
{ DEVCB_DRIVER_LINE_MEMBER(apc_state, apc_dack0_w), DEVCB_DRIVER_LINE_MEMBER(apc_state, apc_dack1_w), DEVCB_DRIVER_LINE_MEMBER(apc_state, apc_dack2_w), DEVCB_DRIVER_LINE_MEMBER(apc_state, apc_dack3_w) }
};
-static UPD1990A_INTERFACE( apc_upd1990a_intf )
-{
- DEVCB_NULL,
- DEVCB_NULL
-};
-
static const floppy_format_type apc_floppy_formats[] = {
FLOPPY_D88_FORMAT,
FLOPPY_IMD_FORMAT,
@@ -1023,7 +1017,7 @@ static MACHINE_CONFIG_START( apc, apc_state )
MCFG_I8237_ADD("i8237", MAIN_CLOCK, dmac_intf)
MCFG_NVRAM_ADD_1FILL("cmos")
- MCFG_UPD1990A_ADD("upd1990a", XTAL_32_768kHz, apc_upd1990a_intf)
+ MCFG_UPD1990A_ADD("upd1990a", XTAL_32_768kHz, NULL, NULL)
MCFG_UPD765A_ADD("upd765", true, true)
MCFG_FLOPPY_DRIVE_ADD("upd765:0", apc_floppies, "8", apc_floppy_formats)
diff --git a/src/mess/drivers/kyocera.c b/src/mess/drivers/kyocera.c
index f68009d74a0..b984e76776a 100644
--- a/src/mess/drivers/kyocera.c
+++ b/src/mess/drivers/kyocera.c
@@ -885,14 +885,6 @@ static INPUT_PORTS_START( olivm10 )
PORT_CONFSETTING( 0x00, "Low Battery" )
INPUT_PORTS_END
-/* uPD1990A Interface */
-
-static UPD1990A_INTERFACE( kc85_upd1990a_intf )
-{
- DEVCB_NULL,
- DEVCB_CPU_INPUT_LINE(I8085_TAG, I8085_RST75_LINE)
-};
-
/* RP5C01A Interface */
static RP5C01_INTERFACE( tandy200_rtc_intf )
@@ -1352,7 +1344,7 @@ static MACHINE_CONFIG_START( kc85, kc85_state )
/* devices */
MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, kc85_8155_intf)
- MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, kc85_upd1990a_intf)
+ MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, INPUTLINE(I8085_TAG, I8085_RST75_LINE))
MCFG_IM6402_ADD(IM6402_TAG, uart_intf)
MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL)
MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
@@ -1390,7 +1382,7 @@ static MACHINE_CONFIG_START( pc8201, pc8201_state )
/* devices */
MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, kc85_8155_intf)
- MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, kc85_upd1990a_intf)
+ MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, INPUTLINE(I8085_TAG, I8085_RST75_LINE))
MCFG_IM6402_ADD(IM6402_TAG, uart_intf)
MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL)
MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
@@ -1434,7 +1426,7 @@ static MACHINE_CONFIG_START( trsm100, trsm100_state )
/* devices */
MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, kc85_8155_intf)
- MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, kc85_upd1990a_intf)
+ MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, INPUTLINE(I8085_TAG, I8085_RST75_LINE))
MCFG_IM6402_ADD(IM6402_TAG, uart_intf)
MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL)
MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
diff --git a/src/mess/drivers/pc1500.c b/src/mess/drivers/pc1500.c
index 5545a45f7cd..672a2d1b360 100644
--- a/src/mess/drivers/pc1500.c
+++ b/src/mess/drivers/pc1500.c
@@ -278,13 +278,6 @@ static const lh5810_interface lh5810_pc1500_config =
DEVCB_CPU_INPUT_LINE("maincpu", LH5801_LINE_MI) //IRQ callback
};
-
-static UPD1990A_INTERFACE( pc1500_upd1990a_intf )
-{
- DEVCB_NULL,
- DEVCB_NULL
-};
-
static MACHINE_CONFIG_START( pc1500, pc1500_state )
MCFG_CPU_ADD("maincpu", LH5801, 1300000) //1.3 MHz
MCFG_CPU_PROGRAM_MAP( pc1500_mem )
@@ -302,7 +295,7 @@ static MACHINE_CONFIG_START( pc1500, pc1500_state )
MCFG_LH5810_ADD("lh5810", lh5810_pc1500_config)
- MCFG_UPD1990A_ADD("upd1990a", XTAL_32_768kHz, pc1500_upd1990a_intf)
+ MCFG_UPD1990A_ADD("upd1990a", XTAL_32_768kHz, NULL, NULL)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/pc8001.c b/src/mess/drivers/pc8001.c
index d5399fc6c11..28f220d4e86 100644
--- a/src/mess/drivers/pc8001.c
+++ b/src/mess/drivers/pc8001.c
@@ -471,14 +471,6 @@ static I8257_INTERFACE( dmac_intf )
{ DEVCB_DRIVER_MEMBER(pc8001_state, dma_io_w), DEVCB_DRIVER_MEMBER(pc8001_state, dma_io_w), DEVCB_DRIVER_MEMBER(pc8001_state, dma_io_w), DEVCB_DRIVER_MEMBER(pc8001_state, dma_io_w) },
};
-/* uPD1990A Interface */
-
-static UPD1990A_INTERFACE( rtc_intf )
-{
- DEVCB_NULL,
- DEVCB_NULL
-};
-
/* Machine Initialization */
void pc8001_state::machine_start()
@@ -569,7 +561,7 @@ static MACHINE_CONFIG_START( pc8001, pc8001_state )
MCFG_I8251_ADD(I8251_TAG, uart_intf)
MCFG_I8255A_ADD(I8255A_TAG, ppi_intf)
MCFG_I8257_ADD(I8257_TAG, 4000000, dmac_intf)
- MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, rtc_intf)
+ MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL)
MCFG_UPD3301_ADD(UPD3301_TAG, 14318180, pc8001_upd3301_intf)
MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
@@ -603,7 +595,7 @@ static MACHINE_CONFIG_START( pc8001mk2, pc8001mk2_state )
MCFG_I8251_ADD(I8251_TAG, uart_intf)
MCFG_I8255A_ADD(I8255A_TAG, ppi_intf)
MCFG_I8257_ADD(I8257_TAG, 4000000, dmac_intf)
- MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, rtc_intf)
+ MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL)
MCFG_UPD3301_ADD(UPD3301_TAG, 14318180, pc8001_upd3301_intf)
MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
diff --git a/src/mess/drivers/pc8401a.c b/src/mess/drivers/pc8401a.c
index 61febb606fc..e34b8deeb69 100644
--- a/src/mess/drivers/pc8401a.c
+++ b/src/mess/drivers/pc8401a.c
@@ -565,14 +565,6 @@ static I8255A_INTERFACE( ppi_intf )
DEVCB_DRIVER_MEMBER(pc8401a_state, ppi_pc_w)
};
-/* uPD1990A Interface */
-
-static UPD1990A_INTERFACE( rtc_intf )
-{
- DEVCB_NULL,
- DEVCB_NULL
-};
-
/* I8251 Interface */
static const i8251_interface uart_intf =
@@ -613,7 +605,7 @@ static MACHINE_CONFIG_START( pc8401a, pc8401a_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", pc8401a_state, pc8401a_keyboard_tick, attotime::from_hz(64))
/* devices */
- MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, rtc_intf)
+ MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL)
MCFG_I8255A_ADD(I8255A_TAG, ppi_intf)
MCFG_I8251_ADD(I8251_TAG, uart_intf)
MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL)
@@ -647,7 +639,7 @@ static MACHINE_CONFIG_START( pc8500, pc8500_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", pc8401a_state, pc8401a_keyboard_tick, attotime::from_hz(64))
/* devices */
- MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, rtc_intf)
+ MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL)
MCFG_I8255A_ADD(I8255A_TAG, ppi_intf)
MCFG_I8251_ADD(I8251_TAG, uart_intf)
MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL)
diff --git a/src/mess/drivers/pc8801.c b/src/mess/drivers/pc8801.c
index c6b0016b869..0e7c5aabb04 100644
--- a/src/mess/drivers/pc8801.c
+++ b/src/mess/drivers/pc8801.c
@@ -2141,7 +2141,7 @@ static INPUT_PORTS_START( pc8001 )
PORT_DIPNAME( 0x08, 0x00, "Auto-boot floppy at start-up" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("upd1990a", upd1990a_rtc_device, data_out_r)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("upd1990a", upd1990a_device, data_out_r)
PORT_BIT( 0x20, IP_ACTIVE_HIGH,IPT_CUSTOM ) PORT_VBLANK("screen")
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -2250,14 +2250,6 @@ static GFXDECODE_START( pc8801 )
GFXDECODE_ENTRY( "kanji", 0, kanji_layout, 0, 8 )
GFXDECODE_END
-/* uPD1990A Interface */
-
-static UPD1990A_INTERFACE( pc8801_upd1990a_intf )
-{
- DEVCB_NULL,
- DEVCB_NULL
-};
-
/* Floppy Configuration */
static SLOT_INTERFACE_START( pc88_floppies )
@@ -2677,7 +2669,7 @@ static MACHINE_CONFIG_START( pc8801, pc8801_state )
#ifdef USE_PROPER_I8214
MCFG_I8214_ADD(I8214_TAG, MASTER_CLOCK, pic_intf)
#endif
- MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, pc8801_upd1990a_intf)
+ MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL)
//MCFG_CENTRONICS_PRINTER_ADD("centronics", standard_centronics)
MCFG_CASSETTE_ADD("cassette", pc8801_cassette_interface)
MCFG_SOFTWARE_LIST_ADD("tape_list","pc8801_cass")
diff --git a/src/mess/drivers/pc9801.c b/src/mess/drivers/pc9801.c
index 16cc9f17400..45625251c76 100644
--- a/src/mess/drivers/pc9801.c
+++ b/src/mess/drivers/pc9801.c
@@ -2663,7 +2663,7 @@ CUSTOM_INPUT_MEMBER(pc9801_state::system_type_r)
static INPUT_PORTS_START( pc9801 )
PORT_START("DSW1")
- PORT_BIT(0x0001, IP_ACTIVE_HIGH,IPT_SPECIAL) PORT_READ_LINE_DEVICE_MEMBER("upd1990a", upd1990a_rtc_device, data_out_r)
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH,IPT_SPECIAL) PORT_READ_LINE_DEVICE_MEMBER("upd1990a", upd1990a_device, data_out_r)
PORT_DIPNAME( 0x0002, 0x0000, "DSW1" ) // error beep if OFF
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
@@ -3283,12 +3283,6 @@ void pc9801_state::pc9801rs_fdc_drq(bool state)
printf("DRQ %02x %d\n",m_fdc_ctrl,state);
}
-static UPD1990A_INTERFACE( pc9801_upd1990a_intf )
-{
- DEVCB_NULL,
- DEVCB_NULL
-};
-
static const i8251_interface pc9801_uart_interface =
{
DEVCB_NULL,
@@ -3564,7 +3558,7 @@ static MACHINE_CONFIG_START( pc9801, pc9801_state )
MCFG_FRAGMENT_ADD(pc9801_mouse)
MCFG_FRAGMENT_ADD(pc9801_cbus)
MCFG_FRAGMENT_ADD(pc9801_sasi)
- MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, pc9801_upd1990a_intf)
+ MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL)
MCFG_I8251_ADD(UPD8251_TAG, pc9801_uart_interface)
MCFG_UPD765A_ADD("upd765_2hd", false, true)
@@ -3631,7 +3625,7 @@ static MACHINE_CONFIG_START( pc9801rs, pc9801_state )
MCFG_I8255_ADD( "ppi8255_fdd", ppi_fdd_intf )
MCFG_FRAGMENT_ADD(pc9801_keyboard)
MCFG_FRAGMENT_ADD(pc9801_mouse)
- MCFG_UPD1990A_ADD("upd1990a", XTAL_32_768kHz, pc9801_upd1990a_intf)
+ MCFG_UPD1990A_ADD("upd1990a", XTAL_32_768kHz, NULL, NULL)
MCFG_I8251_ADD(UPD8251_TAG, pc9801_uart_interface)
MCFG_UPD765A_ADD("upd765_2hd", false, true)
@@ -3697,7 +3691,7 @@ static MACHINE_CONFIG_START( pc9821, pc9801_state )
MCFG_I8255_ADD( "ppi8255_fdd", ppi_fdd_intf )
MCFG_FRAGMENT_ADD(pc9801_keyboard)
MCFG_FRAGMENT_ADD(pc9801_mouse)
- MCFG_UPD1990A_ADD("upd1990a", XTAL_32_768kHz, pc9801_upd1990a_intf)
+ MCFG_UPD1990A_ADD("upd1990a", XTAL_32_768kHz, NULL, NULL)
MCFG_I8251_ADD(UPD8251_TAG, pc9801_uart_interface)
MCFG_UPD765A_ADD("upd765_2hd", false, true)
diff --git a/src/mess/drivers/prof80.c b/src/mess/drivers/prof80.c
index a3967a61541..5f6a2bdd994 100644
--- a/src/mess/drivers/prof80.c
+++ b/src/mess/drivers/prof80.c
@@ -489,17 +489,6 @@ INPUT_PORTS_END
//**************************************************************************
//-------------------------------------------------
-// UPD1990A_INTERFACE( rtc_intf )
-//-------------------------------------------------
-
-static UPD1990A_INTERFACE( rtc_intf )
-{
- DEVCB_NULL,
- DEVCB_NULL
-};
-
-
-//-------------------------------------------------
// upd765_interface fdc_intf
//-------------------------------------------------
@@ -616,7 +605,7 @@ static MACHINE_CONFIG_START( prof80, prof80_state )
MCFG_CPU_IO_MAP(prof80_io)
// devices
- MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, rtc_intf)
+ MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL)
MCFG_UPD765A_ADD(UPD765_TAG, false, true)
MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", prof80_floppies, "525qd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", prof80_floppies, "525qd", floppy_image_device::default_floppy_formats)
diff --git a/src/mess/machine/a2thunderclock.c b/src/mess/machine/a2thunderclock.c
index 3562744c3c9..22093856ce9 100644
--- a/src/mess/machine/a2thunderclock.c
+++ b/src/mess/machine/a2thunderclock.c
@@ -38,14 +38,8 @@ const device_type A2BUS_THUNDERCLOCK = &device_creator<a2bus_thunderclock_device
#define THUNDERCLOCK_ROM_REGION "thunclk_rom"
#define THUNDERCLOCK_UPD1990_TAG "thunclk_upd"
-static UPD1990A_INTERFACE( thunderclock_upd1990a_intf )
-{
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, a2bus_thunderclock_device, upd_dataout_w),
- DEVCB_NULL // TP out not used? for Thunderclock
-};
-
MACHINE_CONFIG_FRAGMENT( thunderclock )
- MCFG_UPD1990A_ADD(THUNDERCLOCK_UPD1990_TAG, 1021800, thunderclock_upd1990a_intf)
+ MCFG_UPD1990A_ADD(THUNDERCLOCK_UPD1990_TAG, 1021800, DEVWRITELINE(DEVICE_SELF_OWNER, a2bus_thunderclock_device, upd_dataout_w), NULL)
MACHINE_CONFIG_END
ROM_START( thunderclock )
diff --git a/src/mess/machine/s100_wunderbus.c b/src/mess/machine/s100_wunderbus.c
index d9a11fdf206..01acc16d34b 100644
--- a/src/mess/machine/s100_wunderbus.c
+++ b/src/mess/machine/s100_wunderbus.c
@@ -163,12 +163,6 @@ WRITE_LINE_MEMBER( s100_wunderbus_device::rtc_tp_w )
}
}
-static UPD1990A_INTERFACE( rtc_intf )
-{
- DEVCB_NULL,
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, s100_wunderbus_device, rtc_tp_w)
-};
-
//-------------------------------------------------
// MACHINE_CONFIG_FRAGMENT( s100_wunderbus )
@@ -183,7 +177,7 @@ static MACHINE_CONFIG_FRAGMENT( s100_wunderbus )
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
MCFG_RS232_PORT_ADD(RS232_C_TAG, rs232c_intf, default_rs232_devices, NULL)
- MCFG_UPD1990A_ADD(UPD1990C_TAG, XTAL_32_768kHz, rtc_intf)
+ MCFG_UPD1990A_ADD(UPD1990C_TAG, XTAL_32_768kHz, NULL, DEVWRITELINE(DEVICE_SELF_OWNER, s100_wunderbus_device, rtc_tp_w))
MACHINE_CONFIG_END