From 2000443a0af7844cfe379c4588d4af47ae07264a Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 3 Dec 2024 18:01:10 +0100 Subject: mb88xx: make tc pin an inputline, don't clear irq pin state at reset, small cleanup --- src/devices/cpu/mb88xx/mb88dasm.cpp | 1 - src/devices/cpu/mb88xx/mb88dasm.h | 2 -- src/devices/cpu/mb88xx/mb88xx.cpp | 70 +++++++++++++++++++------------------ src/devices/cpu/mb88xx/mb88xx.h | 34 +++++++++--------- src/mame/namco/cswat.cpp | 20 +++++------ src/mame/namco/namco06.cpp | 2 +- src/mame/namco/namco50.cpp | 8 ++--- src/mame/namco/namco50.h | 8 ++--- src/mame/namco/namco51.cpp | 38 +++++++------------- src/mame/namco/namco51.h | 5 +-- src/mame/namco/namco52.cpp | 11 +++--- src/mame/namco/namco52.h | 2 +- src/mame/namco/namco53.cpp | 40 +++++++-------------- src/mame/namco/namco53.h | 12 +++---- src/mame/namco/namco54.cpp | 6 ++-- src/mame/namco/namco54.h | 1 - src/mame/namco/namco62.cpp | 2 +- src/mame/namco/namco62.h | 2 +- src/mame/sunelectronics/arabian.cpp | 2 +- 19 files changed, 116 insertions(+), 150 deletions(-) diff --git a/src/devices/cpu/mb88xx/mb88dasm.cpp b/src/devices/cpu/mb88xx/mb88dasm.cpp index 34fe5a843eb..02c08b80477 100644 --- a/src/devices/cpu/mb88xx/mb88dasm.cpp +++ b/src/devices/cpu/mb88xx/mb88dasm.cpp @@ -2,7 +2,6 @@ // copyright-holders:Ernesto Corvi /******************************************************************************* - mb88dasm.cpp Core implementation for the portable Fujitsu MB88xx series MCU disassembler. Written by Ernesto Corvi diff --git a/src/devices/cpu/mb88xx/mb88dasm.h b/src/devices/cpu/mb88xx/mb88dasm.h index 1c5ee9bdafb..6d818f0c6b7 100644 --- a/src/devices/cpu/mb88xx/mb88dasm.h +++ b/src/devices/cpu/mb88xx/mb88dasm.h @@ -2,14 +2,12 @@ // copyright-holders:Ernesto Corvi /******************************************************************************* - mb88dasm.h Core implementation for the portable Fujitsu MB88xx series MCU disassembler. Written by Ernesto Corvi *******************************************************************************/ - #ifndef MAME_CPU_MB88XX_MB88DASM_H #define MAME_CPU_MB88XX_MB88DASM_H diff --git a/src/devices/cpu/mb88xx/mb88xx.cpp b/src/devices/cpu/mb88xx/mb88xx.cpp index b4d7aaa2d5e..48eedebcd23 100644 --- a/src/devices/cpu/mb88xx/mb88xx.cpp +++ b/src/devices/cpu/mb88xx/mb88xx.cpp @@ -2,14 +2,14 @@ // copyright-holders:Ernesto Corvi /*************************************************************************** - mb88xx.cpp Core implementation for the portable Fujitsu MB88xx series MCU emulator. Written by Ernesto Corvi TODO: - - Add support for the timer - - Add support for the serial interface + - Verify timer, Bosconian voice samples are currently a good test case, + and they match PCB recordings. + - Improve support for the serial interface. - Split the core to support multiple CPU types? ***************************************************************************/ @@ -192,6 +192,7 @@ void mb88_cpu_device::device_start() m_serial = timer_alloc(FUNC(mb88_cpu_device::serial_timer), this); + m_if = 0; m_ctr = 0; m_o_output = 0; @@ -219,16 +220,16 @@ void mb88_cpu_device::device_start() save_item(NAME(m_pending_irq)); save_item(NAME(m_in_irq)); - state_add(MB88_PC, "PC", m_PC).formatstr("%02X"); - state_add(MB88_PA, "PA", m_PA).formatstr("%02X"); - state_add(MB88_SI, "SI", m_SI).formatstr("%01X"); - state_add(MB88_A, "A", m_A).formatstr("%01X"); - state_add(MB88_X, "X", m_X).formatstr("%01X"); - state_add(MB88_Y, "Y", m_Y).formatstr("%01X"); - state_add(MB88_PIO, "PIO", m_pio).formatstr("%02X"); - state_add(MB88_TH, "TH", m_TH).formatstr("%01X"); - state_add(MB88_TL, "TL", m_TL).formatstr("%01X"); - state_add(MB88_SB, "SB", m_SB).formatstr("%01X"); + state_add(MB88XX_PC, "PC", m_PC).formatstr("%02X"); + state_add(MB88XX_PA, "PA", m_PA).formatstr("%02X"); + state_add(MB88XX_SI, "SI", m_SI).formatstr("%01X"); + state_add(MB88XX_A, "A", m_A).formatstr("%01X"); + state_add(MB88XX_X, "X", m_X).formatstr("%01X"); + state_add(MB88XX_Y, "Y", m_Y).formatstr("%01X"); + state_add(MB88XX_PIO, "PIO", m_pio).formatstr("%02X"); + state_add(MB88XX_TH, "TH", m_TH).formatstr("%01X"); + state_add(MB88XX_TL, "TL", m_TL).formatstr("%01X"); + state_add(MB88XX_SB, "SB", m_SB).formatstr("%01X"); state_add(STATE_GENPC, "GENPC", m_debugger_pc).callimport().callexport().noshow(); state_add(STATE_GENPCBASE, "CURPC", m_debugger_pc).callimport().callexport().noshow(); @@ -314,7 +315,6 @@ void mb88_cpu_device::device_reset() m_cf = 0; m_vf = 0; m_sf = 0; - m_if = 0; m_pio = 0; m_TH = 0; m_TL = 0; @@ -375,14 +375,30 @@ void mb88_cpu_device::write_pla(u8 index) void mb88_cpu_device::execute_set_input(int inputnum, int state) { - // On rising edge trigger interrupt. - // Note this is a logical level, the actual pin is high-to-low voltage triggered. - if ((m_pio & INT_CAUSE_EXTERNAL) && !m_if && state != CLEAR_LINE) + state = state ? 1 : 0; + + switch (inputnum) { - m_pending_irq |= INT_CAUSE_EXTERNAL; - } + case MB88XX_IRQ_LINE: + // On rising edge trigger interrupt. + // Note this is a logical level, the actual pin is high-to-low voltage triggered. + if (!m_if && state && (m_pio & INT_CAUSE_EXTERNAL)) + m_pending_irq |= INT_CAUSE_EXTERNAL; + + m_if = state; + break; + + case MB88XX_TC_LINE: + // on a falling clock, increment the timer, but only if enabled + if (m_ctr && !state && (m_pio & 0x40)) + increment_timer(); + + m_ctr = state; + break; - m_if = state != CLEAR_LINE; + default: + break; + } } void mb88_cpu_device::pio_enable(u8 newpio) @@ -417,7 +433,6 @@ void mb88_cpu_device::increment_timer() void mb88_cpu_device::burn_cycles(int cycles) { - // TODO: improve/validate serial and timer support m_icount -= cycles; // internal clock enable @@ -446,7 +461,6 @@ void mb88_cpu_device::burn_cycles(int cycles) // the datasheet doesn't mention interrupt vectors but the Arabian MCU program expects the following if (m_pending_irq & m_pio & INT_CAUSE_EXTERNAL) { - // if we have a live external source, call the irqcallback standard_irq_callback(0, intpc); m_PC = 0x02; } @@ -469,18 +483,6 @@ void mb88_cpu_device::burn_cycles(int cycles) } } -void mb88_cpu_device::clock_w(int state) -{ - if (state != m_ctr) - { - m_ctr = state; - - // on a falling clock, increment the timer, but only if enabled - if (m_ctr == 0 && (m_pio & 0x40)) - increment_timer(); - } -} - void mb88_cpu_device::execute_run() { diff --git a/src/devices/cpu/mb88xx/mb88xx.h b/src/devices/cpu/mb88xx/mb88xx.h index 3df9cab61d1..38ad8391dfd 100644 --- a/src/devices/cpu/mb88xx/mb88xx.h +++ b/src/devices/cpu/mb88xx/mb88xx.h @@ -2,7 +2,6 @@ // copyright-holders:Ernesto Corvi /*************************************************************************** - mb88xx.h Core implementation for the portable Fujitsu MB88xx series MCU emulator. Written by Ernesto Corvi @@ -54,20 +53,24 @@ enum { - MB88_PC = 1, - MB88_PA, - MB88_FLAGS, - MB88_SI, - MB88_A, - MB88_X, - MB88_Y, - MB88_PIO, - MB88_TH, - MB88_TL, - MB88_SB + MB88XX_IRQ_LINE = 0, + MB88XX_TC_LINE }; -#define MB88_IRQ_LINE 0 +enum +{ + MB88XX_PC = 1, + MB88XX_PA, + MB88XX_FLAGS, + MB88XX_SI, + MB88XX_A, + MB88XX_X, + MB88XX_Y, + MB88XX_PIO, + MB88XX_TH, + MB88XX_TL, + MB88XX_SB +}; class mb88_cpu_device : public cpu_device @@ -98,8 +101,6 @@ public: void set_pla_bits(u8 bits) { m_pla_bits = bits; } // 4-bit or 8-bit (4-bit requires PLA data) void set_pla_data(u8 *pla) { m_pla_data = pla; } - void clock_w(int state); - void data_4bit(address_map &map) ATTR_COLD; void data_5bit(address_map &map) ATTR_COLD; void data_6bit(address_map &map) ATTR_COLD; @@ -120,6 +121,7 @@ protected: virtual u32 execute_max_cycles() const noexcept override { return 2+3; } // includes interrupt virtual void execute_run() override; virtual void execute_set_input(int inputnum, int state) override; + virtual bool execute_input_edge_triggered(int inputnum) const noexcept override { return inputnum == MB88XX_IRQ_LINE || inputnum == MB88XX_TC_LINE; } virtual u64 execute_clocks_to_cycles(u64 clocks) const noexcept override { return (clocks + 6 - 1) / 6; } virtual u64 execute_cycles_to_clocks(u64 cycles) const noexcept override { return (cycles * 6); } @@ -150,7 +152,7 @@ private: u8 m_cf; // Carry flag: 1 bit u8 m_vf; // Timer overflow flag: 1 bit u8 m_sf; // Serial Full/Empty flag: 1 bit - u8 m_if; // Interrupt flag: 1 bit + u8 m_if; // Interrupt flag (IRQ pin): 1 bit // Peripheral Control u8 m_pio; // Peripheral enable bits: 8 bits diff --git a/src/mame/namco/cswat.cpp b/src/mame/namco/cswat.cpp index bda1fed7fc9..44ef1b44099 100644 --- a/src/mame/namco/cswat.cpp +++ b/src/mame/namco/cswat.cpp @@ -2,16 +2,16 @@ // copyright-holders:hap /*************************************************************************** - Namco Cosmoswat, a lightgun game that uses a projector and a bunch of - mirrors and motors to move a spotlight(s) on a large projection screen, - similar to Namco Shoot Away/Shoot Away II. - The CRT is just used for showing status and keeping scores. - - X1 18.432MHz - HD68A09EP - Hitachi M6809 CPU - 2 * M58725P - Mitsubishi 2KB SRAM - 0737 - Namco custom DIP28, clock divider? - 5275 - Namco custom DIP42, sample player +Namco Cosmoswat, a lightgun game that uses a projector and a bunch of +mirrors and motors to move a spotlight(s) on a large projection screen, +similar to Namco Shoot Away/Shoot Away II. +The CRT is just used for showing status and keeping scores. + +X1 18.432MHz +HD68A09EP - Hitachi M6809 CPU +2 * M58725P - Mitsubishi 2KB SRAM +0737 - Namco custom DIP28, clock divider? +5275 - Namco custom DIP42, sample player TODO: - fix gfx/colors (redump needed) diff --git a/src/mame/namco/namco06.cpp b/src/mame/namco/namco06.cpp index 692cc1b06f1..03087fffd5e 100644 --- a/src/mame/namco/namco06.cpp +++ b/src/mame/namco/namco06.cpp @@ -229,7 +229,7 @@ void namco_06xx_device::set_nmi(int state) { if (!m_nmicpu->suspended(SUSPEND_REASON_HALT | SUSPEND_REASON_RESET | SUSPEND_REASON_DISABLE)) { - m_nmicpu->set_input_line(INPUT_LINE_NMI, state); + m_nmicpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE); } } diff --git a/src/mame/namco/namco50.cpp b/src/mame/namco/namco50.cpp index f10bc0077da..54954c80c1d 100644 --- a/src/mame/namco/namco50.cpp +++ b/src/mame/namco/namco50.cpp @@ -138,7 +138,7 @@ Flags: 80=high score, 40=first bonus, 20=interval bonus, 10=? void namco_50xx_device::reset(int state) { // The incoming signal is active low - m_cpu->set_input_line(INPUT_LINE_RESET, !state); + m_cpu->set_input_line(INPUT_LINE_RESET, state ? CLEAR_LINE : ASSERT_LINE); } @@ -179,7 +179,7 @@ TIMER_CALLBACK_MEMBER(namco_50xx_device::rw_sync) void namco_50xx_device::chip_select(int state) { - m_cpu->set_input_line(0, state); + m_cpu->set_input_line(MB88XX_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); } void namco_50xx_device::write(uint8_t data) @@ -204,7 +204,7 @@ uint8_t namco_50xx_device::read() ROM_START( namco_50xx ) ROM_REGION( 0x800, "mcu", 0 ) - ROM_LOAD( "50xx.bin", 0x0000, 0x0800, CRC(a0acbaf7) SHA1(f03c79451e73b3a93c1591cdb27fedc9f130508d) ) + ROM_LOAD( "50xx.bin", 0x0000, 0x0800, CRC(a0acbaf7) SHA1(f03c79451e73b3a93c1591cdb27fedc9f130508d) ) ROM_END @@ -237,7 +237,7 @@ void namco_50xx_device::device_start() void namco_50xx_device::device_add_mconfig(machine_config &config) { - MB8842(config, m_cpu, DERIVED_CLOCK(1,1)); /* parent clock, internally divided by 6 */ + MB8842(config, m_cpu, DERIVED_CLOCK(1,1)); // parent clock, internally divided by 6 m_cpu->read_k().set(FUNC(namco_50xx_device::K_r)); m_cpu->read_r<0>().set(FUNC(namco_50xx_device::R0_r)); m_cpu->read_r<2>().set(FUNC(namco_50xx_device::R2_r)); diff --git a/src/mame/namco/namco50.h b/src/mame/namco/namco50.h index 4934e2d3e7a..eee45c4cfb8 100644 --- a/src/mame/namco/namco50.h +++ b/src/mame/namco/namco50.h @@ -7,7 +7,7 @@ #include "cpu/mb88xx/mb88xx.h" -/* device get info callback */ + class namco_50xx_device : public device_t { public: @@ -28,9 +28,9 @@ protected: private: // internal state required_device m_cpu; - uint8_t m_rw; - uint8_t m_cmd; - uint8_t m_portO; + uint8_t m_rw; + uint8_t m_cmd; + uint8_t m_portO; TIMER_CALLBACK_MEMBER(O_w_sync); TIMER_CALLBACK_MEMBER(rw_sync); diff --git a/src/mame/namco/namco51.cpp b/src/mame/namco/namco51.cpp index 160e5d9affc..3ace7d294dd 100644 --- a/src/mame/namco/namco51.cpp +++ b/src/mame/namco/namco51.cpp @@ -64,13 +64,13 @@ void namco_51xx_device::reset(int state) { // Reset line is active low. - m_cpu->set_input_line(INPUT_LINE_RESET, !state); + m_cpu->set_input_line(INPUT_LINE_RESET, state ? CLEAR_LINE : ASSERT_LINE); } void namco_51xx_device::vblank(int state) { // The timer is active on falling edges. - m_cpu->clock_w(!state); + m_cpu->set_input_line(MB88XX_TC_LINE, state ? CLEAR_LINE : ASSERT_LINE); } void namco_51xx_device::rw(int state) @@ -85,7 +85,7 @@ TIMER_CALLBACK_MEMBER(namco_51xx_device::rw_sync) void namco_51xx_device::chip_select(int state) { - m_cpu->set_input_line(0, state); + m_cpu->set_input_line(MB88XX_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); } uint8_t namco_51xx_device::read() @@ -108,24 +108,10 @@ uint8_t namco_51xx_device::K_r() return (m_rw << 3) | (m_portO & 0x07); } -uint8_t namco_51xx_device::R0_r() +template +uint8_t namco_51xx_device::R_r() { - return m_in[0](); -} - -uint8_t namco_51xx_device::R1_r() -{ - return m_in[1](); -} - -uint8_t namco_51xx_device::R2_r() -{ - return m_in[2](); -} - -uint8_t namco_51xx_device::R3_r() -{ - return m_in[3](); + return m_in[N](); } void namco_51xx_device::O_w(uint8_t data) @@ -149,7 +135,7 @@ void namco_51xx_device::P_w(uint8_t data) ROM_START( namco_51xx ) ROM_REGION( 0x400, "mcu", 0 ) - ROM_LOAD( "51xx.bin", 0x0000, 0x0400, CRC(c2f57ef8) SHA1(50de79e0d6a76bda95ffb02fcce369a79e6abfec) ) + ROM_LOAD( "51xx.bin", 0x0000, 0x0400, CRC(c2f57ef8) SHA1(50de79e0d6a76bda95ffb02fcce369a79e6abfec) ) ROM_END DEFINE_DEVICE_TYPE(NAMCO_51XX, namco_51xx_device, "namco51", "Namco 51xx") @@ -181,12 +167,12 @@ void namco_51xx_device::device_start() void namco_51xx_device::device_add_mconfig(machine_config &config) { - MB8843(config, m_cpu, DERIVED_CLOCK(1,1)); /* parent clock, internally divided by 6 */ + MB8843(config, m_cpu, DERIVED_CLOCK(1,1)); // parent clock, internally divided by 6 m_cpu->read_k().set(FUNC(namco_51xx_device::K_r)); - m_cpu->read_r<0>().set(FUNC(namco_51xx_device::R0_r)); - m_cpu->read_r<1>().set(FUNC(namco_51xx_device::R1_r)); - m_cpu->read_r<2>().set(FUNC(namco_51xx_device::R2_r)); - m_cpu->read_r<3>().set(FUNC(namco_51xx_device::R3_r)); + m_cpu->read_r<0>().set(FUNC(namco_51xx_device::R_r<0>)); + m_cpu->read_r<1>().set(FUNC(namco_51xx_device::R_r<1>)); + m_cpu->read_r<2>().set(FUNC(namco_51xx_device::R_r<2>)); + m_cpu->read_r<3>().set(FUNC(namco_51xx_device::R_r<3>)); m_cpu->write_o().set(FUNC(namco_51xx_device::O_w)); m_cpu->write_p().set(FUNC(namco_51xx_device::P_w)); } diff --git a/src/mame/namco/namco51.h b/src/mame/namco/namco51.h index 1b873bc30c9..869a92073e2 100644 --- a/src/mame/namco/namco51.h +++ b/src/mame/namco/namco51.h @@ -40,10 +40,7 @@ private: devcb_write_line m_lockout; uint8_t K_r(); - uint8_t R0_r(); - uint8_t R1_r(); - uint8_t R2_r(); - uint8_t R3_r(); + template uint8_t R_r(); void O_w(uint8_t data); void P_w(uint8_t data); diff --git a/src/mame/namco/namco52.cpp b/src/mame/namco/namco52.cpp index e1a435d7618..5a19a94a13f 100644 --- a/src/mame/namco/namco52.cpp +++ b/src/mame/namco/namco52.cpp @@ -53,7 +53,7 @@ void namco_52xx_device::reset(int state) { // The incoming signal is active low - m_cpu->set_input_line(INPUT_LINE_RESET, !state); + m_cpu->set_input_line(INPUT_LINE_RESET, state ? CLEAR_LINE : ASSERT_LINE); } uint8_t namco_52xx_device::K_r() @@ -110,13 +110,12 @@ TIMER_CALLBACK_MEMBER(namco_52xx_device::write_sync) void namco_52xx_device::chip_select(int state) { - m_cpu->set_input_line(0, state); + m_cpu->set_input_line(MB88XX_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); } TIMER_CALLBACK_MEMBER(namco_52xx_device::external_clock_pulse) { - m_cpu->clock_w(ASSERT_LINE); - m_cpu->clock_w(CLEAR_LINE); + m_cpu->pulse_input_line(MB88XX_TC_LINE, attotime::zero); } @@ -126,7 +125,7 @@ TIMER_CALLBACK_MEMBER(namco_52xx_device::external_clock_pulse) ROM_START( namco_52xx ) ROM_REGION( 0x400, "mcu", 0 ) - ROM_LOAD( "52xx.bin", 0x0000, 0x0400, CRC(3257d11e) SHA1(4883b2fdbc99eb7b9906357fcc53915842c2c186) ) + ROM_LOAD( "52xx.bin", 0x0000, 0x0400, CRC(3257d11e) SHA1(4883b2fdbc99eb7b9906357fcc53915842c2c186) ) ROM_END @@ -168,7 +167,7 @@ void namco_52xx_device::device_start() void namco_52xx_device::device_add_mconfig(machine_config &config) { - MB8843(config, m_cpu, DERIVED_CLOCK(1,1)); /* parent clock, internally divided by 6 */ + MB8843(config, m_cpu, DERIVED_CLOCK(1,1)); // parent clock, internally divided by 6 m_cpu->read_k().set(FUNC(namco_52xx_device::K_r)); m_cpu->write_o().set(FUNC(namco_52xx_device::O_w)); m_cpu->write_p().set(FUNC(namco_52xx_device::P_w)); diff --git a/src/mame/namco/namco52.h b/src/mame/namco/namco52.h index deb23ff4d87..86d6be24f54 100644 --- a/src/mame/namco/namco52.h +++ b/src/mame/namco/namco52.h @@ -6,6 +6,7 @@ #include "sound/discrete.h" #include "cpu/mb88xx/mb88xx.h" + class namco_52xx_device : public device_t { public: @@ -57,7 +58,6 @@ private: DECLARE_DEVICE_TYPE(NAMCO_52XX, namco_52xx_device) - /* discrete nodes */ #define NAMCO_52XX_P_DATA(base) (base) diff --git a/src/mame/namco/namco53.cpp b/src/mame/namco/namco53.cpp index 15648712ddc..9bbb3398e95 100644 --- a/src/mame/namco/namco53.cpp +++ b/src/mame/namco/namco53.cpp @@ -63,32 +63,18 @@ void namco_53xx_device::reset(int state) { // The incoming signal is active low - m_cpu->set_input_line(INPUT_LINE_RESET, !state); + m_cpu->set_input_line(INPUT_LINE_RESET, state ? CLEAR_LINE : ASSERT_LINE); } uint8_t namco_53xx_device::K_r() { - return m_k(0); + return m_k(); } -uint8_t namco_53xx_device::R0_r() +template +uint8_t namco_53xx_device::R_r() { - return m_in[0](0); -} - -uint8_t namco_53xx_device::R1_r() -{ - return m_in[1](0); -} - -uint8_t namco_53xx_device::R2_r() -{ - return m_in[2](0); -} - -uint8_t namco_53xx_device::R3_r() -{ - return m_in[3](0); + return m_in[N](); } void namco_53xx_device::O_w(uint8_t data) @@ -98,12 +84,12 @@ void namco_53xx_device::O_w(uint8_t data) void namco_53xx_device::P_w(uint8_t data) { - m_p(0, data); + m_p(data); } void namco_53xx_device::chip_select(int state) { - m_cpu->set_input_line(0, state); + m_cpu->set_input_line(MB88XX_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); } uint8_t namco_53xx_device::read() @@ -118,7 +104,7 @@ uint8_t namco_53xx_device::read() ROM_START( namco_53xx ) ROM_REGION( 0x400, "mcu", 0 ) - ROM_LOAD( "53xx.bin", 0x0000, 0x0400, CRC(b326fecb) SHA1(758d8583d658e4f1df93184009d86c3eb8713899) ) + ROM_LOAD( "53xx.bin", 0x0000, 0x0400, CRC(b326fecb) SHA1(758d8583d658e4f1df93184009d86c3eb8713899) ) ROM_END DEFINE_DEVICE_TYPE(NAMCO_53XX, namco_53xx_device, "namco53", "Namco 53xx") @@ -147,14 +133,14 @@ void namco_53xx_device::device_start() void namco_53xx_device::device_add_mconfig(machine_config &config) { - MB8843(config, m_cpu, DERIVED_CLOCK(1,1)); /* parent clock, internally divided by 6 */ + MB8843(config, m_cpu, DERIVED_CLOCK(1,1)); // parent clock, internally divided by 6 m_cpu->read_k().set(FUNC(namco_53xx_device::K_r)); m_cpu->write_o().set(FUNC(namco_53xx_device::O_w)); m_cpu->write_p().set(FUNC(namco_53xx_device::P_w)); - m_cpu->read_r<0>().set(FUNC(namco_53xx_device::R0_r)); - m_cpu->read_r<1>().set(FUNC(namco_53xx_device::R1_r)); - m_cpu->read_r<2>().set(FUNC(namco_53xx_device::R2_r)); - m_cpu->read_r<3>().set(FUNC(namco_53xx_device::R3_r)); + m_cpu->read_r<0>().set(FUNC(namco_53xx_device::R_r<0>)); + m_cpu->read_r<1>().set(FUNC(namco_53xx_device::R_r<1>)); + m_cpu->read_r<2>().set(FUNC(namco_53xx_device::R_r<2>)); + m_cpu->read_r<3>().set(FUNC(namco_53xx_device::R_r<3>)); } //------------------------------------------------- diff --git a/src/mame/namco/namco53.h b/src/mame/namco/namco53.h index 735614fe001..80e45efb801 100644 --- a/src/mame/namco/namco53.h +++ b/src/mame/namco/namco53.h @@ -7,6 +7,7 @@ #include "cpu/mb88xx/mb88xx.h" + class namco_53xx_device : public device_t { public: @@ -30,16 +31,13 @@ protected: private: // internal state required_device m_cpu; - uint8_t m_portO; - devcb_read8 m_k; + uint8_t m_portO; + devcb_read8 m_k; devcb_read8::array<4> m_in; - devcb_write8 m_p; + devcb_write8 m_p; uint8_t K_r(); - uint8_t R0_r(); - uint8_t R1_r(); - uint8_t R2_r(); - uint8_t R3_r(); + template uint8_t R_r(); void O_w(uint8_t data); void P_w(uint8_t data); }; diff --git a/src/mame/namco/namco54.cpp b/src/mame/namco/namco54.cpp index cbd9e1faf7f..29a6171d659 100644 --- a/src/mame/namco/namco54.cpp +++ b/src/mame/namco/namco54.cpp @@ -56,7 +56,7 @@ void namco_54xx_device::reset(int state) { // The incoming signal is active low - m_cpu->set_input_line(INPUT_LINE_RESET, !state); + m_cpu->set_input_line(INPUT_LINE_RESET, state ? CLEAR_LINE : ASSERT_LINE); } uint8_t namco_54xx_device::K_r() @@ -96,7 +96,7 @@ TIMER_CALLBACK_MEMBER(namco_54xx_device::write_sync) void namco_54xx_device::chip_select(int state) { - m_cpu->set_input_line(0, state); + m_cpu->set_input_line(MB88XX_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); } @@ -106,7 +106,7 @@ void namco_54xx_device::chip_select(int state) ROM_START( namco_54xx ) ROM_REGION( 0x400, "mcu", 0 ) - ROM_LOAD( "54xx.bin", 0x0000, 0x0400, CRC(ee7357e0) SHA1(01bdf984a49e8d0cc8761b2cc162fd6434d5afbe) ) + ROM_LOAD( "54xx.bin", 0x0000, 0x0400, CRC(ee7357e0) SHA1(01bdf984a49e8d0cc8761b2cc162fd6434d5afbe) ) ROM_END DEFINE_DEVICE_TYPE(NAMCO_54XX, namco_54xx_device, "namco54", "Namco 54xx") diff --git a/src/mame/namco/namco54.h b/src/mame/namco/namco54.h index 09ba192c70c..d8c0a0814c2 100644 --- a/src/mame/namco/namco54.h +++ b/src/mame/namco/namco54.h @@ -43,7 +43,6 @@ private: DECLARE_DEVICE_TYPE(NAMCO_54XX, namco_54xx_device) - /* discrete nodes */ #define NAMCO_54XX_0_DATA(base) (NODE_RELATIVE(base, 0)) #define NAMCO_54XX_1_DATA(base) (NODE_RELATIVE(base, 1)) diff --git a/src/mame/namco/namco62.cpp b/src/mame/namco/namco62.cpp index 1cbfd61fe08..72e03175fb2 100644 --- a/src/mame/namco/namco62.cpp +++ b/src/mame/namco/namco62.cpp @@ -52,7 +52,7 @@ void namco_62xx_device::device_start() void namco_62xx_device::device_add_mconfig(machine_config &config) { - MB8843(config, m_cpu, DERIVED_CLOCK(1,1)); /* parent clock, internally divided by 6 (TODO: Correct?) */ + MB8843(config, m_cpu, DERIVED_CLOCK(1,1)); // parent clock, internally divided by 6 (TODO: Correct?) // m_cpu->read_k().set(FUNC(namco_62xx_device::namco_62xx_K_r)); // m_cpu->write_o().set(FUNC(namco_62xx_device::namco_62xx_O_w)); // m_cpu->read_r<0>().set(FUNC(namco_62xx_device::namco_62xx_R0_r)); diff --git a/src/mame/namco/namco62.h b/src/mame/namco/namco62.h index e1bffe7be55..a4df20da3ed 100644 --- a/src/mame/namco/namco62.h +++ b/src/mame/namco/namco62.h @@ -5,13 +5,13 @@ #include "cpu/mb88xx/mb88xx.h" + class namco_62xx_device : public device_t { public: namco_62xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); template auto input_callback() { return m_in[N].bind(); } - template auto output_callback() { return m_out[N].bind(); } protected: diff --git a/src/mame/sunelectronics/arabian.cpp b/src/mame/sunelectronics/arabian.cpp index ddca0e2c8c3..6b62f24dd14 100644 --- a/src/mame/sunelectronics/arabian.cpp +++ b/src/mame/sunelectronics/arabian.cpp @@ -517,7 +517,7 @@ void arabian_state::ay8910_portb_w(uint8_t data) bit 0 = coin 1 counter */ - m_mcu->set_input_line(MB88_IRQ_LINE, data & 0x20 ? CLEAR_LINE : ASSERT_LINE); + m_mcu->set_input_line(MB88XX_IRQ_LINE, data & 0x20 ? CLEAR_LINE : ASSERT_LINE); m_mcu->set_input_line(INPUT_LINE_RESET, data & 0x10 ? CLEAR_LINE : ASSERT_LINE); // clock the coin counters -- cgit v1.2.3