upd7810: Replace fake I/O space with callbacks

This commit is contained in:
AJR 2017-02-09 19:11:19 -05:00
parent e365c63476
commit a4b3eafc7a
14 changed files with 303 additions and 235 deletions

View File

@ -209,17 +209,6 @@ static ADDRESS_MAP_START( ex800_mem, AS_PROGRAM, 8, epson_ex800_t )
ADDRESS_MAP_END
//-------------------------------------------------
// ADDRESS_MAP( ex800_io )
//-------------------------------------------------
static ADDRESS_MAP_START( ex800_io, AS_IO, 8, epson_ex800_t )
AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READ(porta_r) AM_WRITE(porta_w)
AM_RANGE(UPD7810_PORTB, UPD7810_PORTB) AM_READ(portb_r) AM_WRITE(portb_w)
AM_RANGE(UPD7810_PORTC, UPD7810_PORTC) AM_READ(portc_r) AM_WRITE(portc_w)
ADDRESS_MAP_END
//-------------------------------------------------
// MACHINE_DRIVER( epson_ex800 )
//-------------------------------------------------
@ -228,8 +217,12 @@ static MACHINE_CONFIG_FRAGMENT( epson_ex800 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", UPD7810, 12000000) /* 12 MHz? */
MCFG_CPU_PROGRAM_MAP(ex800_mem)
MCFG_CPU_IO_MAP(ex800_io)
MCFG_UPD7810_PORTA_READ_CB(READ8(epson_ex800_t, porta_r))
MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(epson_ex800_t, porta_w))
MCFG_UPD7810_PORTB_READ_CB(READ8(epson_ex800_t, portb_r))
MCFG_UPD7810_PORTB_WRITE_CB(WRITE8(epson_ex800_t, portb_w))
MCFG_UPD7810_PORTC_READ_CB(READ8(epson_ex800_t, portc_r))
MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(epson_ex800_t, portc_w))
MCFG_DEFAULT_LAYOUT(layout_ex800)

View File

@ -60,17 +60,6 @@ static ADDRESS_MAP_START( lx800_mem, AS_PROGRAM, 8, epson_lx800_t )
ADDRESS_MAP_END
//-------------------------------------------------
// ADDRESS_MAP( lx800_io )
//-------------------------------------------------
static ADDRESS_MAP_START( lx800_io, AS_IO, 8, epson_lx800_t )
AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READWRITE(porta_r, porta_w)
AM_RANGE(UPD7810_PORTB, UPD7810_PORTB) AM_READ_PORT("DIPSW1")
AM_RANGE(UPD7810_PORTC, UPD7810_PORTC) AM_READWRITE(portc_r, portc_w)
ADDRESS_MAP_END
//-------------------------------------------------
// MACHINE_DRIVER( epson_lx800 )
//-------------------------------------------------
@ -79,7 +68,11 @@ static MACHINE_CONFIG_FRAGMENT( epson_lx800 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", UPD7810, XTAL_14_7456MHz)
MCFG_CPU_PROGRAM_MAP(lx800_mem)
MCFG_CPU_IO_MAP(lx800_io)
MCFG_UPD7810_PORTA_READ_CB(READ8(epson_lx800_t, porta_r))
MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(epson_lx800_t, porta_w))
MCFG_UPD7810_PORTB_READ_CB(IOPORT("DIPSW1"))
MCFG_UPD7810_PORTC_READ_CB(READ8(epson_lx800_t, portc_r))
MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(epson_lx800_t, portc_w))
MCFG_UPD7810_AN0(READLINE(epson_lx800_t, an0_r))
MCFG_UPD7810_AN1(READLINE(epson_lx800_t, an1_r))
MCFG_UPD7810_AN2(READLINE(epson_lx800_t, an2_r))

View File

@ -103,17 +103,6 @@ static ADDRESS_MAP_START( lx810l_mem, AS_PROGRAM, 8, epson_lx810l_t )
ADDRESS_MAP_END
//-------------------------------------------------
// ADDRESS_MAP( lx810l_io )
//-------------------------------------------------
static ADDRESS_MAP_START( lx810l_io, AS_IO, 8, epson_lx810l_t )
AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READWRITE(porta_r, porta_w)
AM_RANGE(UPD7810_PORTB, UPD7810_PORTB) AM_READWRITE(portb_r, portb_w)
AM_RANGE(UPD7810_PORTC, UPD7810_PORTC) AM_READWRITE(portc_r, portc_w)
ADDRESS_MAP_END
//-------------------------------------------------
// MACHINE_DRIVER( epson_lx810l )
//-------------------------------------------------
@ -122,7 +111,12 @@ static MACHINE_CONFIG_FRAGMENT( epson_lx810l )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", UPD7810, XTAL_14_7456MHz)
MCFG_CPU_PROGRAM_MAP(lx810l_mem)
MCFG_CPU_IO_MAP(lx810l_io)
MCFG_UPD7810_PORTA_READ_CB(READ8(epson_lx810l_t, porta_r))
MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(epson_lx810l_t, porta_w))
MCFG_UPD7810_PORTB_READ_CB(READ8(epson_lx810l_t, portb_r))
MCFG_UPD7810_PORTB_WRITE_CB(WRITE8(epson_lx810l_t, portb_w))
MCFG_UPD7810_PORTC_READ_CB(READ8(epson_lx810l_t, portc_r))
MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(epson_lx810l_t, portc_w))
MCFG_UPD7810_AN0(READ8(epson_lx810l_t, an0_r))
MCFG_UPD7810_AN1(READ8(epson_lx810l_t, an1_r))
MCFG_UPD7810_AN2(READ8(epson_lx810l_t, an2_r))

View File

@ -381,34 +381,6 @@ const device_type UPD78C05 = &device_creator<upd78c05_device>;
const device_type UPD78C06 = &device_creator<upd78c06_device>;
upd7810_device::upd7810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: cpu_device(mconfig, UPD7810, "uPD7810", tag, owner, clock, "upd7810", __FILE__)
, m_to_func(*this)
, m_co0_func(*this)
, m_co1_func(*this)
, m_txd_func(*this)
, m_rxd_func(*this)
, m_an0_func(*this)
, m_an1_func(*this)
, m_an2_func(*this)
, m_an3_func(*this)
, m_an4_func(*this)
, m_an5_func(*this)
, m_an6_func(*this)
, m_an7_func(*this)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 8, 0)
{
m_opXX = s_opXX_7810;
m_op48 = s_op48;
m_op4C = s_op4C;
m_op4D = s_op4D;
m_op60 = s_op60;
m_op64 = s_op64;
m_op70 = s_op70;
m_op74 = s_op74;
}
upd7810_device::upd7810_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
, m_to_func(*this)
@ -424,11 +396,34 @@ upd7810_device::upd7810_device(const machine_config &mconfig, device_type type,
, m_an5_func(*this)
, m_an6_func(*this)
, m_an7_func(*this)
, m_pa_in_cb(*this)
, m_pb_in_cb(*this)
, m_pc_in_cb(*this)
, m_pd_in_cb(*this)
, m_pf_in_cb(*this)
, m_pa_out_cb(*this)
, m_pb_out_cb(*this)
, m_pc_out_cb(*this)
, m_pd_out_cb(*this)
, m_pf_out_cb(*this)
, m_pt_in_cb(*this)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 8, 0)
{
}
upd7810_device::upd7810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upd7810_device(mconfig, UPD7810, "uPD7810", tag, owner, clock, "upd7810", __FILE__)
{
m_opXX = s_opXX_7810;
m_op48 = s_op48;
m_op4C = s_op4C;
m_op4D = s_op4D;
m_op60 = s_op60;
m_op64 = s_op64;
m_op70 = s_op70;
m_op74 = s_op74;
}
upd7807_device::upd7807_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: upd7810_device(mconfig, UPD7807, "uPD7807", tag, owner, clock, "upd7807", __FILE__)
{
@ -517,17 +512,17 @@ uint8_t upd7810_device::RP(offs_t port)
{
case UPD7810_PORTA:
if (m_ma) // NS20031301 no need to read if the port is set as output
m_pa_in = m_io->read_byte(port);
m_pa_in = m_pa_in_cb();
data = (m_pa_in & m_ma) | (m_pa_out & ~m_ma);
break;
case UPD7810_PORTB:
if (m_mb) // NS20031301 no need to read if the port is set as output
m_pb_in = m_io->read_byte(port);
m_pb_in = m_pb_in_cb();
data = (m_pb_in & m_mb) | (m_pb_out & ~m_mb);
break;
case UPD7810_PORTC:
if (m_mc) // NS20031301 no need to read if the port is set as output
m_pc_in = m_io->read_byte(port);
m_pc_in = m_pc_in_cb();
data = (m_pc_in & m_mc) | (m_pc_out & ~m_mc);
if (m_mcc & 0x01) /* PC0 = TxD output */
data = (data & ~0x01) | (m_txd & 1 ? 0x01 : 0x00);
@ -547,7 +542,7 @@ uint8_t upd7810_device::RP(offs_t port)
data = (data & ~0x80) | (m_co1 & 1 ? 0x80 : 0x00);
break;
case UPD7810_PORTD:
m_pd_in = m_io->read_byte(port);
m_pd_in = m_pd_in_cb();
switch (m_mm & 0x07)
{
case 0x00: /* PD input mode, PF port mode */
@ -562,7 +557,7 @@ uint8_t upd7810_device::RP(offs_t port)
}
break;
case UPD7810_PORTF:
m_pf_in = m_io->read_byte(port);
m_pf_in = m_pf_in_cb();
switch (m_mm & 0x06)
{
case 0x00: /* PD input/output mode, PF port mode */
@ -582,7 +577,7 @@ uint8_t upd7810_device::RP(offs_t port)
}
break;
case UPD7807_PORTT: // NS20031301 partial implementation
data = m_io->read_byte(port);
data = m_pt_in_cb();
break;
default:
logerror("uPD7810 internal error: RP() called with invalid port number\n");
@ -598,13 +593,13 @@ void upd7810_device::WP(offs_t port, uint8_t data)
m_pa_out = data;
// data = (data & ~m_ma) | (m_pa_in & m_ma);
data = (data & ~m_ma) | (m_ma); // NS20031401
m_io->write_byte(port, data);
m_pa_out_cb(data);
break;
case UPD7810_PORTB:
m_pb_out = data;
// data = (data & ~m_mb) | (m_pb_in & m_mb);
data = (data & ~m_mb) | (m_mb); // NS20031401
m_io->write_byte(port, data);
m_pb_out_cb(data);
break;
case UPD7810_PORTC:
m_pc_out = data;
@ -626,7 +621,7 @@ void upd7810_device::WP(offs_t port, uint8_t data)
data = (data & ~0x40) | (m_co0 & 1 ? 0x40 : 0x00);
if (m_mcc & 0x80) /* PC7 = CO1 output */
data = (data & ~0x80) | (m_co1 & 1 ? 0x80 : 0x00);
m_io->write_byte(port, data);
m_pc_out_cb(data);
break;
case UPD7810_PORTD:
m_pd_out = data;
@ -641,7 +636,7 @@ void upd7810_device::WP(offs_t port, uint8_t data)
default: /* PD extension mode, PF port/extension mode */
return;
}
m_io->write_byte(port, data);
m_pd_out_cb(data);
break;
case UPD7810_PORTF:
m_pf_out = data;
@ -660,7 +655,7 @@ void upd7810_device::WP(offs_t port, uint8_t data)
data |= 0xff; /* what would come out for the lower bits here? */
break;
}
m_io->write_byte(port, data);
m_pf_out_cb(data);
break;
default:
logerror("uPD7810 internal error: RP() called with invalid port number\n");
@ -1512,7 +1507,6 @@ void upd7810_device::base_device_start()
{
m_program = &space(AS_PROGRAM);
m_direct = &m_program->direct();
m_io = &space(AS_IO);
m_to_func.resolve_safe();
m_co0_func.resolve_safe();
@ -1528,6 +1522,20 @@ void upd7810_device::base_device_start()
m_an6_func.resolve_safe(0);
m_an7_func.resolve_safe(0);
m_pa_in_cb.resolve_safe(0);
m_pb_in_cb.resolve_safe(0);
m_pc_in_cb.resolve_safe(0);
m_pd_in_cb.resolve_safe(0);
m_pf_in_cb.resolve_safe(0);
m_pa_out_cb.resolve_safe();
m_pb_out_cb.resolve_safe();
m_pc_out_cb.resolve_safe();
m_pd_out_cb.resolve_safe();
m_pf_out_cb.resolve_safe();
m_pt_in_cb.resolve_safe(0); // TODO: uPD7807 only
save_item(NAME(m_ppc.w.l));
save_item(NAME(m_pc.w.l));
save_item(NAME(m_sp.w.l));

View File

@ -30,18 +30,6 @@ enum
UPD7810_LV0, UPD7810_LV1
};
/* port numbers for PA,PB,PC,PD and PF */
enum
{
UPD7810_PORTA, UPD7810_PORTB, UPD7810_PORTC, UPD7810_PORTD, UPD7810_PORTF
};
enum
{
UPD7807_PORTA, UPD7807_PORTB, UPD7807_PORTC, UPD7807_PORTD, UPD7807_PORTF,
UPD7807_PORTT
};
/* IRQ lines */
#define UPD7810_INTF1 0
#define UPD7810_INTF2 1
@ -90,6 +78,52 @@ enum
devcb = &upd7810_device::set_an7_func(*device, DEVCB_##_devcb);
#define MCFG_UPD7810_PORTA_READ_CB(_devcb) \
devcb = &upd7810_device::set_pa_in_cb(*device, DEVCB_##_devcb);
#define MCFG_UPD7810_PORTB_READ_CB(_devcb) \
devcb = &upd7810_device::set_pb_in_cb(*device, DEVCB_##_devcb);
#define MCFG_UPD7810_PORTC_READ_CB(_devcb) \
devcb = &upd7810_device::set_pc_in_cb(*device, DEVCB_##_devcb);
#define MCFG_UPD7810_PORTD_READ_CB(_devcb) \
devcb = &upd7810_device::set_pd_in_cb(*device, DEVCB_##_devcb);
#define MCFG_UPD7810_PORTF_READ_CB(_devcb) \
devcb = &upd7810_device::set_pf_in_cb(*device, DEVCB_##_devcb);
#define MCFG_UPD7810_PORTA_WRITE_CB(_devcb) \
devcb = &upd7810_device::set_pa_out_cb(*device, DEVCB_##_devcb);
#define MCFG_UPD7810_PORTB_WRITE_CB(_devcb) \
devcb = &upd7810_device::set_pb_out_cb(*device, DEVCB_##_devcb);
#define MCFG_UPD7810_PORTC_WRITE_CB(_devcb) \
devcb = &upd7810_device::set_pc_out_cb(*device, DEVCB_##_devcb);
#define MCFG_UPD7810_PORTD_WRITE_CB(_devcb) \
devcb = &upd7810_device::set_pd_out_cb(*device, DEVCB_##_devcb);
#define MCFG_UPD7810_PORTF_WRITE_CB(_devcb) \
devcb = &upd7810_device::set_pf_out_cb(*device, DEVCB_##_devcb);
#define MCFG_UPD7807_PORTA_READ_CB MCFG_UPD7810_PORTA_READ_CB
#define MCFG_UPD7807_PORTB_READ_CB MCFG_UPD7810_PORTB_READ_CB
#define MCFG_UPD7807_PORTC_READ_CB MCFG_UPD7810_PORTC_READ_CB
#define MCFG_UPD7807_PORTD_READ_CB MCFG_UPD7810_PORTD_READ_CB
#define MCFG_UPD7807_PORTF_READ_CB MCFG_UPD7810_PORTF_READ_CB
#define MCFG_UPD7807_PORTA_WRITE_CB MCFG_UPD7810_PORTA_WRITE_CB
#define MCFG_UPD7807_PORTB_WRITE_CB MCFG_UPD7810_PORTB_WRITE_CB
#define MCFG_UPD7807_PORTC_WRITE_CB MCFG_UPD7810_PORTC_WRITE_CB
#define MCFG_UPD7807_PORTD_WRITE_CB MCFG_UPD7810_PORTD_WRITE_CB
#define MCFG_UPD7807_PORTF_WRITE_CB MCFG_UPD7810_PORTF_WRITE_CB
#define MCFG_UPD7807_PORTT_READ_CB(_devcb) \
devcb = &upd7810_device::set_pt_in_cb(*device, DEVCB_##_devcb);
class upd7810_device : public cpu_device
{
public:
@ -112,6 +146,19 @@ public:
template<class _Object> static devcb_base &set_an6_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_an6_func.set_callback(object); }
template<class _Object> static devcb_base &set_an7_func(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_an7_func.set_callback(object); }
template<class _Object> static devcb_base &set_pa_in_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pa_in_cb.set_callback(object); }
template<class _Object> static devcb_base &set_pb_in_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pb_in_cb.set_callback(object); }
template<class _Object> static devcb_base &set_pc_in_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pc_in_cb.set_callback(object); }
template<class _Object> static devcb_base &set_pd_in_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pd_in_cb.set_callback(object); }
template<class _Object> static devcb_base &set_pf_in_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pf_in_cb.set_callback(object); }
template<class _Object> static devcb_base &set_pa_out_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pa_out_cb.set_callback(object); }
template<class _Object> static devcb_base &set_pb_out_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pb_out_cb.set_callback(object); }
template<class _Object> static devcb_base &set_pc_out_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pc_out_cb.set_callback(object); }
template<class _Object> static devcb_base &set_pd_out_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pd_out_cb.set_callback(object); }
template<class _Object> static devcb_base &set_pf_out_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pf_out_cb.set_callback(object); }
template<class _Object> static devcb_base &set_pt_in_cb(device_t &device, _Object object) { return downcast<upd7810_device &>(device).m_pt_in_cb.set_callback(object); }
protected:
// flags
enum
@ -167,7 +214,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ); }
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
@ -200,6 +247,19 @@ protected:
devcb_read8 m_an6_func;
devcb_read8 m_an7_func;
devcb_read8 m_pa_in_cb;
devcb_read8 m_pb_in_cb;
devcb_read8 m_pc_in_cb;
devcb_read8 m_pd_in_cb;
devcb_read8 m_pf_in_cb;
devcb_write8 m_pa_out_cb;
devcb_write8 m_pb_out_cb;
devcb_write8 m_pc_out_cb;
devcb_write8 m_pd_out_cb;
devcb_write8 m_pf_out_cb;
devcb_read8 m_pt_in_cb; // TODO: uPD7807 only
typedef void (upd7810_device::*opcode_func)();
struct opcode_s {
@ -245,7 +305,6 @@ protected:
static const struct opcode_s s_opXX_78c06[256];
address_space_config m_program_config;
address_space_config m_io_config;
PAIR m_ppc; /* previous program counter */
PAIR m_pc; /* program counter */
@ -346,7 +405,6 @@ protected:
const struct opcode_s *m_op74;
address_space *m_program;
direct_read_data *m_direct;
address_space *m_io;
int m_icount;
uint8_t RP(offs_t port);

View File

@ -110,6 +110,23 @@
#define WM(A,V) m_program->write_byte(A,V)
//**************************************************************************
// I/O PORTS
//**************************************************************************
/* port numbers for PA,PB,PC,PD and PF */
enum
{
UPD7810_PORTA, UPD7810_PORTB, UPD7810_PORTC, UPD7810_PORTD, UPD7810_PORTF
};
enum
{
UPD7807_PORTA, UPD7807_PORTB, UPD7807_PORTC, UPD7807_PORTD, UPD7807_PORTF,
UPD7807_PORTT
};
//**************************************************************************
// PSW OPERATIONS
//**************************************************************************

View File

@ -71,13 +71,10 @@ static ADDRESS_MAP_START( ax80_map, AS_PROGRAM, 8, ax80_state )
AM_RANGE(0xff00, 0xffff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( ax80_io, AS_IO, 8, ax80_state )
ADDRESS_MAP_END
static MACHINE_CONFIG_START( ax80, ax80_state )
MCFG_CPU_ADD("maincpu", UPD7810, XTAL_12MHz)
MCFG_CPU_PROGRAM_MAP(ax80_map)
MCFG_CPU_IO_MAP(ax80_io)
//MCFG_CPU_IO_MAP(ax80_io)
MCFG_DEVICE_ADD(PIT0_TAG, PIT8253, 0)
MCFG_DEVICE_ADD(PIT1_TAG, PIT8253, 0)

View File

@ -253,12 +253,6 @@ WRITE8_MEMBER(fitfight_state::snd_portc_w)
//osd_printf_debug("PC W %x @%x\n",data,space.device().safe_pc());
}
static ADDRESS_MAP_START( snd_io, AS_IO, 8, fitfight_state )
AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READ(snd_porta_r) AM_WRITE(snd_porta_w)
AM_RANGE(UPD7810_PORTB, UPD7810_PORTB) AM_READ(snd_portb_r) AM_WRITE(snd_portb_w)
AM_RANGE(UPD7810_PORTC, UPD7810_PORTC) AM_READ(snd_portc_r) AM_WRITE(snd_portc_w)
ADDRESS_MAP_END
INTERRUPT_GEN_MEMBER(fitfight_state::snd_irq)
{
generic_pulse_irq_line(device.execute(), UPD7810_INTF2, 1);
@ -733,10 +727,14 @@ static MACHINE_CONFIG_START( fitfight, fitfight_state )
MCFG_CPU_ADD("audiocpu", UPD7810, 12000000)
MCFG_CPU_PROGRAM_MAP(snd_mem)
MCFG_CPU_IO_MAP(snd_io)
MCFG_UPD7810_PORTA_READ_CB(READ8(fitfight_state, snd_porta_r))
MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(fitfight_state, snd_porta_w))
MCFG_UPD7810_PORTB_READ_CB(READ8(fitfight_state, snd_portb_r))
MCFG_UPD7810_PORTB_WRITE_CB(WRITE8(fitfight_state, snd_portb_w))
MCFG_UPD7810_PORTC_READ_CB(READ8(fitfight_state, snd_portc_r))
MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(fitfight_state, snd_portc_w))
MCFG_CPU_VBLANK_INT_DRIVER("screen", fitfight_state, snd_irq)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", fitfight)
MCFG_SCREEN_ADD("screen", RASTER)

View File

@ -348,13 +348,6 @@ WRITE8_MEMBER( fp1100_state::portc_w )
m_centronics->write_strobe(BIT(data, 6));
}
static ADDRESS_MAP_START(fp1100_slave_io, AS_IO, 8, fp1100_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00, 0x00) AM_WRITE(porta_w)
AM_RANGE(0x01, 0x01) AM_READ(portb_r) AM_DEVWRITE("cent_data_out", output_latch_device, write)
AM_RANGE(0x02, 0x02) AM_READWRITE(portc_r,portc_w)
ADDRESS_MAP_END
/* Input ports */
static INPUT_PORTS_START( fp1100 )
@ -648,7 +641,11 @@ static MACHINE_CONFIG_START( fp1100, fp1100_state )
MCFG_CPU_ADD( "sub", UPD7801, MAIN_CLOCK/4 )
MCFG_CPU_PROGRAM_MAP( fp1100_slave_map )
MCFG_CPU_IO_MAP( fp1100_slave_io )
MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(fp1100_state, porta_w))
MCFG_UPD7810_PORTB_READ_CB(READ8(fp1100_state, portb_r))
MCFG_UPD7810_PORTB_WRITE_CB(DEVWRITE8("cent_data_out", output_latch_device, write))
MCFG_UPD7810_PORTC_READ_CB(READ8(fp1100_state, portc_r))
MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(fp1100_state, portc_w))
MCFG_UPD7810_TXD(WRITELINE(fp1100_state, cass_w))
MCFG_MACHINE_RESET_OVERRIDE(fp1100_state, fp1100)

View File

@ -20,13 +20,6 @@ static ADDRESS_MAP_START(gamepock_mem, AS_PROGRAM, 8, gamepock_state)
ADDRESS_MAP_END
static ADDRESS_MAP_START(gamepock_io, AS_IO, 8, gamepock_state )
AM_RANGE( 0x00, 0x00 ) AM_WRITE( port_a_w )
AM_RANGE( 0x01, 0x01 ) AM_READWRITE( port_b_r, port_b_w )
AM_RANGE( 0x02, 0x02 ) AM_READ( port_c_r )
ADDRESS_MAP_END
static INPUT_PORTS_START( gamepock )
PORT_START("IN0")
PORT_BIT ( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
@ -47,7 +40,10 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( gamepock, gamepock_state )
MCFG_CPU_ADD("maincpu", UPD78C06, XTAL_6MHz) /* uPD78C06AG */
MCFG_CPU_PROGRAM_MAP( gamepock_mem)
MCFG_CPU_IO_MAP( gamepock_io)
MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(gamepock_state, port_a_w))
MCFG_UPD7810_PORTB_READ_CB(READ8(gamepock_state, port_b_r))
MCFG_UPD7810_PORTB_WRITE_CB(WRITE8(gamepock_state, port_b_w))
MCFG_UPD7810_PORTC_READ_CB(READ8(gamepock_state, port_c_r))
MCFG_UPD7810_TO(WRITELINE(gamepock_state,gamepock_to_w))
MCFG_SCREEN_ADD("screen", LCD)

View File

@ -20,14 +20,20 @@ public:
, m_maincpu(*this, "maincpu")
, m_speaker(*this, "speaker")
, m_cart(*this, "cartslot")
, m_io_joy(*this, "JOY")
{ }
DECLARE_PALETTE_INIT(gmaster);
DECLARE_READ8_MEMBER(gmaster_io_r);
DECLARE_WRITE8_MEMBER(gmaster_io_w);
DECLARE_READ8_MEMBER(gmaster_port_r);
DECLARE_WRITE8_MEMBER(gmaster_port_w);
DECLARE_READ8_MEMBER(gmaster_portb_r);
DECLARE_READ8_MEMBER(gmaster_portc_r);
DECLARE_READ8_MEMBER(gmaster_portd_r);
DECLARE_READ8_MEMBER(gmaster_portf_r);
DECLARE_WRITE8_MEMBER(gmaster_porta_w);
DECLARE_WRITE8_MEMBER(gmaster_portb_w);
DECLARE_WRITE8_MEMBER(gmaster_portc_w);
DECLARE_WRITE8_MEMBER(gmaster_portd_w);
DECLARE_WRITE8_MEMBER(gmaster_portf_w);
DECLARE_DRIVER_INIT(gmaster) { memset(&m_video, 0, sizeof(m_video)); memset(m_ram, 0, sizeof(m_ram)); }
uint32_t screen_update_gmaster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@ -49,7 +55,6 @@ private:
required_device<cpu_device> m_maincpu;
required_device<speaker_sound_device> m_speaker;
required_device<generic_slot_device> m_cart;
required_ioport m_io_joy;
};
@ -149,34 +154,78 @@ WRITE8_MEMBER(gmaster_state::gmaster_io_w)
}
READ8_MEMBER(gmaster_state::gmaster_port_r)
READ8_MEMBER(gmaster_state::gmaster_portb_r)
{
// uint8_t data = m_ports[offset];
// uint8_t data = m_ports[1];
uint8_t data = 0xff;
switch (offset)
{
case UPD7810_PORTA:
data = m_io_joy->read();
break;
default:
logerror("%.4x port %d read %.2x\n", m_maincpu->pc(), offset, data);
break;
logerror("%.4x port B read %.2x\n", m_maincpu->pc(), data);
return data;
}
READ8_MEMBER(gmaster_state::gmaster_portc_r)
{
// uint8_t data = m_ports[2];
uint8_t data = 0xff;
logerror("%.4x port C read %.2x\n", m_maincpu->pc(), data);
return data;
}
READ8_MEMBER(gmaster_state::gmaster_portd_r)
{
// uint8_t data = m_ports[3];
uint8_t data = 0xff;
logerror("%.4x port D read %.2x\n", m_maincpu->pc(), data);
return data;
}
READ8_MEMBER(gmaster_state::gmaster_portf_r)
{
// uint8_t data = m_ports[4];
uint8_t data = 0xff;
logerror("%.4x port F read %.2x\n", m_maincpu->pc(), data);
return data;
}
WRITE8_MEMBER(gmaster_state::gmaster_port_w)
WRITE8_MEMBER(gmaster_state::gmaster_porta_w)
{
m_ports[offset] = data;
logerror("%.4x port %d written %.2x\n", m_maincpu->pc(), offset, data);
switch (offset)
m_ports[0] = data;
logerror("%.4x port A written %.2x\n", m_maincpu->pc(), data);
}
WRITE8_MEMBER(gmaster_state::gmaster_portb_w)
{
case UPD7810_PORTC:
m_ports[1] = data;
logerror("%.4x port B written %.2x\n", m_maincpu->pc(), data);
}
WRITE8_MEMBER(gmaster_state::gmaster_portc_w)
{
m_ports[2] = data;
logerror("%.4x port C written %.2x\n", m_maincpu->pc(), data);
m_video.y = BLITTER_Y;
m_speaker->level_w(BIT(data, 4));
break;
}
WRITE8_MEMBER(gmaster_state::gmaster_portd_w)
{
m_ports[3] = data;
logerror("%.4x port D written %.2x\n", m_maincpu->pc(), data);
}
WRITE8_MEMBER(gmaster_state::gmaster_portf_w)
{
m_ports[4] = data;
logerror("%.4x port F written %.2x\n", m_maincpu->pc(), data);
}
@ -188,11 +237,6 @@ static ADDRESS_MAP_START( gmaster_mem, AS_PROGRAM, 8, gmaster_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START(gmaster_io, AS_IO, 8, gmaster_state )
AM_RANGE(UPD7810_PORTA, UPD7810_PORTF) AM_READWRITE(gmaster_port_r, gmaster_port_w )
ADDRESS_MAP_END
static INPUT_PORTS_START( gmaster )
PORT_START("JOY")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT)
@ -282,7 +326,16 @@ void gmaster_state::machine_start()
static MACHINE_CONFIG_START( gmaster, gmaster_state )
MCFG_CPU_ADD("maincpu", UPD7810, XTAL_12MHz/2/*?*/) // upd78c11 in the unit
MCFG_CPU_PROGRAM_MAP(gmaster_mem)
MCFG_CPU_IO_MAP( gmaster_io)
MCFG_UPD7810_PORTA_READ_CB(IOPORT("JOY"))
MCFG_UPD7810_PORTB_READ_CB(READ8(gmaster_state, gmaster_portb_r))
MCFG_UPD7810_PORTC_READ_CB(READ8(gmaster_state, gmaster_portc_r))
MCFG_UPD7810_PORTD_READ_CB(READ8(gmaster_state, gmaster_portd_r))
MCFG_UPD7810_PORTF_READ_CB(READ8(gmaster_state, gmaster_portf_r))
MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(gmaster_state, gmaster_porta_w))
MCFG_UPD7810_PORTB_WRITE_CB(WRITE8(gmaster_state, gmaster_portb_w))
MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(gmaster_state, gmaster_portc_w))
MCFG_UPD7810_PORTD_WRITE_CB(WRITE8(gmaster_state, gmaster_portd_w))
MCFG_UPD7810_PORTF_WRITE_CB(WRITE8(gmaster_state, gmaster_portf_w))
MCFG_SCREEN_ADD("screen", LCD)
MCFG_SCREEN_REFRESH_RATE(60)

View File

@ -584,13 +584,6 @@ static ADDRESS_MAP_START( reikaids_upd7807_map, AS_PROGRAM, 8, homedata_state )
AM_RANGE(0xff00, 0xffff) AM_RAM /* Internal RAM */
ADDRESS_MAP_END
static ADDRESS_MAP_START( reikaids_upd7807_io_map, AS_IO, 8, homedata_state )
AM_RANGE(UPD7807_PORTA, UPD7807_PORTA) AM_READWRITE(reikaids_upd7807_porta_r, reikaids_upd7807_porta_w)
AM_RANGE(UPD7807_PORTB, UPD7807_PORTB) AM_DEVWRITE("dac", dac_byte_interface, write)
AM_RANGE(UPD7807_PORTC, UPD7807_PORTC) AM_WRITE(reikaids_upd7807_portc_w)
AM_RANGE(UPD7807_PORTT, UPD7807_PORTT) AM_READ(reikaids_snd_command_r)
ADDRESS_MAP_END
/**************************************************************************/
@ -619,13 +612,6 @@ static ADDRESS_MAP_START( pteacher_upd7807_map, AS_PROGRAM, 8, homedata_state )
AM_RANGE(0xff00, 0xffff) AM_RAM /* Internal RAM */
ADDRESS_MAP_END
static ADDRESS_MAP_START( pteacher_upd7807_io_map, AS_IO, 8, homedata_state )
AM_RANGE(UPD7807_PORTA, UPD7807_PORTA) AM_READWRITE(pteacher_upd7807_porta_r, pteacher_upd7807_porta_w)
AM_RANGE(UPD7807_PORTB, UPD7807_PORTB) AM_DEVWRITE("dac", dac_byte_interface, write)
AM_RANGE(UPD7807_PORTC, UPD7807_PORTC) AM_READ_PORT("COIN") AM_WRITE(pteacher_upd7807_portc_w)
AM_RANGE(UPD7807_PORTT, UPD7807_PORTT) AM_READ(pteacher_keyboard_r)
ADDRESS_MAP_END
/**************************************************************************/
@ -1275,7 +1261,11 @@ static MACHINE_CONFIG_START( reikaids, homedata_state )
MCFG_CPU_ADD("audiocpu", UPD7807, 8000000) /* ??? MHz (max speed for the 7807 is 12MHz) */
MCFG_CPU_PROGRAM_MAP(reikaids_upd7807_map)
MCFG_CPU_IO_MAP(reikaids_upd7807_io_map)
MCFG_UPD7807_PORTA_READ_CB(READ8(homedata_state, reikaids_upd7807_porta_r))
MCFG_UPD7807_PORTA_WRITE_CB(WRITE8(homedata_state, reikaids_upd7807_porta_w))
MCFG_UPD7807_PORTB_WRITE_CB(DEVWRITE8("dac", dac_byte_interface, write))
MCFG_UPD7807_PORTC_WRITE_CB(WRITE8(homedata_state, reikaids_upd7807_portc_w))
MCFG_UPD7807_PORTT_READ_CB(READ8(homedata_state, reikaids_snd_command_r))
MCFG_CPU_VBLANK_INT_DRIVER("screen", homedata_state, upd7807_irq)
MCFG_QUANTUM_TIME(attotime::from_hz(30000)) // very high interleave required to sync for startup tests
@ -1327,7 +1317,12 @@ static MACHINE_CONFIG_START( pteacher, homedata_state )
MCFG_CPU_ADD("audiocpu", UPD7807, 9000000) /* 9MHz ? */
MCFG_CPU_PROGRAM_MAP(pteacher_upd7807_map)
MCFG_CPU_IO_MAP(pteacher_upd7807_io_map)
MCFG_UPD7807_PORTA_READ_CB(READ8(homedata_state, pteacher_upd7807_porta_r))
MCFG_UPD7807_PORTA_WRITE_CB(WRITE8(homedata_state, pteacher_upd7807_porta_w))
MCFG_UPD7807_PORTB_WRITE_CB(DEVWRITE8("dac", dac_byte_interface, write))
MCFG_UPD7807_PORTC_READ_CB(IOPORT("COIN"))
MCFG_UPD7807_PORTC_WRITE_CB(WRITE8(homedata_state, pteacher_upd7807_portc_w))
MCFG_UPD7807_PORTT_READ_CB(READ8(homedata_state, pteacher_keyboard_r))
MCFG_CPU_VBLANK_INT_DRIVER("screen", homedata_state, upd7807_irq)
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // should be enough

View File

@ -707,21 +707,6 @@ static ADDRESS_MAP_START( metro_sound_map, AS_PROGRAM, 8, metro_state )
AM_RANGE(0xff00, 0xffff) AM_RAM /* Internal RAM */
ADDRESS_MAP_END
static ADDRESS_MAP_START( metro_sound_io_map, AS_IO, 8, metro_state )
AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READWRITE(metro_porta_r, metro_porta_w)
AM_RANGE(UPD7810_PORTB, UPD7810_PORTB) AM_WRITE(metro_portb_w)
AM_RANGE(UPD7810_PORTC, UPD7810_PORTC) AM_WRITE(metro_sound_rombank_w)
ADDRESS_MAP_END
/*****************/
static ADDRESS_MAP_START( daitorid_sound_io_map, AS_IO, 8, metro_state )
AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READWRITE(metro_porta_r, metro_porta_w)
AM_RANGE(UPD7810_PORTB, UPD7810_PORTB) AM_WRITE(daitorid_portb_w)
AM_RANGE(UPD7810_PORTC, UPD7810_PORTC) AM_WRITE(daitorid_sound_rombank_w)
ADDRESS_MAP_END
/*****************/
@ -3656,6 +3641,27 @@ static MACHINE_CONFIG_DERIVED( batlbubl, msgogo )
MACHINE_CONFIG_END
static MACHINE_CONFIG_FRAGMENT( metro_upd7810_sound )
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_UPD7810_RXD(READLINE(metro_state, metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_UPD7810_PORTA_READ_CB(READ8(metro_state, metro_porta_r))
MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(metro_state, metro_porta_w))
MCFG_UPD7810_PORTB_WRITE_CB(WRITE8(metro_state, metro_portb_w))
MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(metro_state, metro_sound_rombank_w))
MACHINE_CONFIG_END
static MACHINE_CONFIG_FRAGMENT( daitorid_upd7810_sound )
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_12MHz)
MCFG_UPD7810_RXD(READLINE(metro_state, metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_UPD7810_PORTA_READ_CB(READ8(metro_state, metro_porta_r))
MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(metro_state, metro_porta_w))
MCFG_UPD7810_PORTB_WRITE_CB(WRITE8(metro_state, daitorid_portb_w))
MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(metro_state, daitorid_sound_rombank_w))
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( daitorid, metro_state )
/* basic machine hardware */
@ -3664,10 +3670,7 @@ static MACHINE_CONFIG_START( daitorid, metro_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_12MHz)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(daitorid_sound_io_map)
MCFG_FRAGMENT_ADD(daitorid_upd7810_sound)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -3705,10 +3708,7 @@ static MACHINE_CONFIG_START( dharma, metro_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
MCFG_FRAGMENT_ADD(metro_upd7810_sound)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -3745,10 +3745,7 @@ static MACHINE_CONFIG_START( karatour, metro_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, karatour_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
MCFG_FRAGMENT_ADD(metro_upd7810_sound)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -3785,10 +3782,7 @@ static MACHINE_CONFIG_START( 3kokushi, metro_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, karatour_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
MCFG_FRAGMENT_ADD(metro_upd7810_sound)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -3825,10 +3819,7 @@ static MACHINE_CONFIG_START( lastfort, metro_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
MCFG_FRAGMENT_ADD(metro_upd7810_sound)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -3864,10 +3855,7 @@ static MACHINE_CONFIG_START( lastforg, metro_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, karatour_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
MCFG_FRAGMENT_ADD(metro_upd7810_sound)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -4046,10 +4034,7 @@ static MACHINE_CONFIG_START( pangpoms, metro_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
MCFG_FRAGMENT_ADD(metro_upd7810_sound)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -4086,10 +4071,7 @@ static MACHINE_CONFIG_START( poitto, metro_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
MCFG_FRAGMENT_ADD(metro_upd7810_sound)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -4126,10 +4108,7 @@ static MACHINE_CONFIG_START( pururun, metro_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2) /* Not confiremd */
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(daitorid_sound_io_map)
MCFG_FRAGMENT_ADD(daitorid_upd7810_sound)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -4167,10 +4146,7 @@ static MACHINE_CONFIG_START( skyalert, metro_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
MCFG_FRAGMENT_ADD(metro_upd7810_sound)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -4207,10 +4183,7 @@ static MACHINE_CONFIG_START( toride2g, metro_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
MCFG_FRAGMENT_ADD(metro_upd7810_sound)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)

View File

@ -76,13 +76,6 @@ static ADDRESS_MAP_START( scv_mem, AS_PROGRAM, 8, scv_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( scv_io, AS_IO, 8, scv_state )
AM_RANGE( 0x00, 0x00 ) AM_WRITE(porta_w)
AM_RANGE( 0x01, 0x01 ) AM_READ(portb_r)
AM_RANGE( 0x02, 0x02 ) AM_READWRITE(portc_r, portc_w)
ADDRESS_MAP_END
static INPUT_PORTS_START( scv )
PORT_START( "PA.0" )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
@ -660,7 +653,10 @@ static MACHINE_CONFIG_START( scv, scv_state )
MCFG_CPU_ADD( "maincpu", UPD7801, XTAL_4MHz )
MCFG_CPU_PROGRAM_MAP( scv_mem )
MCFG_CPU_IO_MAP( scv_io )
MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(scv_state, porta_w))
MCFG_UPD7810_PORTB_READ_CB(READ8(scv_state, portb_r))
MCFG_UPD7810_PORTC_READ_CB(READ8(scv_state, portc_r))
MCFG_UPD7810_PORTC_WRITE_CB(WRITE8(scv_state, portc_w))
/* Video chip is EPOCH TV-1 */
MCFG_SCREEN_ADD( "screen", RASTER )