diff --git a/src/devices/bus/centronics/epson_ex800.cpp b/src/devices/bus/centronics/epson_ex800.cpp index 4305744fcb1..42354324f9a 100644 --- a/src/devices/bus/centronics/epson_ex800.cpp +++ b/src/devices/bus/centronics/epson_ex800.cpp @@ -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) diff --git a/src/devices/bus/centronics/epson_lx800.cpp b/src/devices/bus/centronics/epson_lx800.cpp index 0367206cd78..b1495d083be 100644 --- a/src/devices/bus/centronics/epson_lx800.cpp +++ b/src/devices/bus/centronics/epson_lx800.cpp @@ -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)) diff --git a/src/devices/bus/centronics/epson_lx810l.cpp b/src/devices/bus/centronics/epson_lx810l.cpp index d5cebfe8e2e..3fc87dadd39 100644 --- a/src/devices/bus/centronics/epson_lx810l.cpp +++ b/src/devices/bus/centronics/epson_lx810l.cpp @@ -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)) diff --git a/src/devices/cpu/upd7810/upd7810.cpp b/src/devices/cpu/upd7810/upd7810.cpp index 618a3d41638..72f7bf1a847 100644 --- a/src/devices/cpu/upd7810/upd7810.cpp +++ b/src/devices/cpu/upd7810/upd7810.cpp @@ -381,34 +381,6 @@ const device_type UPD78C05 = &device_creator; const device_type UPD78C06 = &device_creator; -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)); diff --git a/src/devices/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h index 05919e8100c..fa20f0d781d 100644 --- a/src/devices/cpu/upd7810/upd7810.h +++ b/src/devices/cpu/upd7810/upd7810.h @@ -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 static devcb_base &set_an6_func(device_t &device, _Object object) { return downcast(device).m_an6_func.set_callback(object); } template static devcb_base &set_an7_func(device_t &device, _Object object) { return downcast(device).m_an7_func.set_callback(object); } + template static devcb_base &set_pa_in_cb(device_t &device, _Object object) { return downcast(device).m_pa_in_cb.set_callback(object); } + template static devcb_base &set_pb_in_cb(device_t &device, _Object object) { return downcast(device).m_pb_in_cb.set_callback(object); } + template static devcb_base &set_pc_in_cb(device_t &device, _Object object) { return downcast(device).m_pc_in_cb.set_callback(object); } + template static devcb_base &set_pd_in_cb(device_t &device, _Object object) { return downcast(device).m_pd_in_cb.set_callback(object); } + template static devcb_base &set_pf_in_cb(device_t &device, _Object object) { return downcast(device).m_pf_in_cb.set_callback(object); } + template static devcb_base &set_pa_out_cb(device_t &device, _Object object) { return downcast(device).m_pa_out_cb.set_callback(object); } + template static devcb_base &set_pb_out_cb(device_t &device, _Object object) { return downcast(device).m_pb_out_cb.set_callback(object); } + template static devcb_base &set_pc_out_cb(device_t &device, _Object object) { return downcast(device).m_pc_out_cb.set_callback(object); } + template static devcb_base &set_pd_out_cb(device_t &device, _Object object) { return downcast(device).m_pd_out_cb.set_callback(object); } + template static devcb_base &set_pf_out_cb(device_t &device, _Object object) { return downcast(device).m_pf_out_cb.set_callback(object); } + + template static devcb_base &set_pt_in_cb(device_t &device, _Object object) { return downcast(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); diff --git a/src/devices/cpu/upd7810/upd7810_macros.h b/src/devices/cpu/upd7810/upd7810_macros.h index 27783fb5d9a..7db095a74e1 100644 --- a/src/devices/cpu/upd7810/upd7810_macros.h +++ b/src/devices/cpu/upd7810/upd7810_macros.h @@ -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 //************************************************************************** diff --git a/src/mame/drivers/akaiax80.cpp b/src/mame/drivers/akaiax80.cpp index d0296c48b9e..6d04b1b0dca 100644 --- a/src/mame/drivers/akaiax80.cpp +++ b/src/mame/drivers/akaiax80.cpp @@ -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) diff --git a/src/mame/drivers/fitfight.cpp b/src/mame/drivers/fitfight.cpp index cdef98489ca..56e79aec2d8 100644 --- a/src/mame/drivers/fitfight.cpp +++ b/src/mame/drivers/fitfight.cpp @@ -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) diff --git a/src/mame/drivers/fp1100.cpp b/src/mame/drivers/fp1100.cpp index 4301af2b1af..0f473e169a2 100644 --- a/src/mame/drivers/fp1100.cpp +++ b/src/mame/drivers/fp1100.cpp @@ -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) diff --git a/src/mame/drivers/gamepock.cpp b/src/mame/drivers/gamepock.cpp index 1dc26145819..041633e3a01 100644 --- a/src/mame/drivers/gamepock.cpp +++ b/src/mame/drivers/gamepock.cpp @@ -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) diff --git a/src/mame/drivers/gmaster.cpp b/src/mame/drivers/gmaster.cpp index f414bdf1ac6..0cbcb0c84cb 100644 --- a/src/mame/drivers/gmaster.cpp +++ b/src/mame/drivers/gmaster.cpp @@ -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 m_maincpu; required_device m_speaker; required_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) - { - case UPD7810_PORTC: - m_video.y = BLITTER_Y; - m_speaker->level_w(BIT(data, 4)); - break; - } + m_ports[0] = data; + logerror("%.4x port A written %.2x\n", m_maincpu->pc(), data); +} + +WRITE8_MEMBER(gmaster_state::gmaster_portb_w) +{ + 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)); +} + +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) diff --git a/src/mame/drivers/homedata.cpp b/src/mame/drivers/homedata.cpp index 7e1d20f465b..01e77b483df 100644 --- a/src/mame/drivers/homedata.cpp +++ b/src/mame/drivers/homedata.cpp @@ -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 diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp index 8b9ba31b76a..a73b7dcda8b 100644 --- a/src/mame/drivers/metro.cpp +++ b/src/mame/drivers/metro.cpp @@ -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) diff --git a/src/mame/drivers/scv.cpp b/src/mame/drivers/scv.cpp index 76347b0362f..59c1dbca9f1 100644 --- a/src/mame/drivers/scv.cpp +++ b/src/mame/drivers/scv.cpp @@ -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 )