upd1990a: devcb2. (nw)

This commit is contained in:
Curt Coder 2013-06-10 13:43:50 +00:00
parent ab3134c696
commit 36198d2169
12 changed files with 111 additions and 205 deletions

View File

@ -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;
}

View File

@ -26,23 +26,19 @@
//**************************************************************************
// 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
};
devcb_resolved_write_line m_out_data_func;
devcb_resolved_write_line m_out_tp_func;
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
};
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

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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")

View File

@ -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)

View File

@ -488,17 +488,6 @@ INPUT_PORTS_END
// DEVICE CONFIGURATION
//**************************************************************************
//-------------------------------------------------
// 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)

View File

@ -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 )

View File

@ -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