summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2022-02-18 17:07:03 +1100
committer Robbbert <Robbbert@users.noreply.github.com>2022-02-18 17:07:03 +1100
commit57eca5d586fe51bbf4dd0edf95c669ab0c31fd22 (patch)
tree58bd3f03bd8911fd2443002a3d5abd7485a78136 /src
parente9a12d091563b77ab2209f0b5d659f73ad1880da (diff)
decopincpu: added missing solenoid outputs
Diffstat (limited to 'src')
-rw-r--r--src/mame/machine/decopincpu.cpp17
-rw-r--r--src/mame/machine/decopincpu.h9
2 files changed, 16 insertions, 10 deletions
diff --git a/src/mame/machine/decopincpu.cpp b/src/mame/machine/decopincpu.cpp
index f7aa98d0b94..138c8b683c5 100644
--- a/src/mame/machine/decopincpu.cpp
+++ b/src/mame/machine/decopincpu.cpp
@@ -9,7 +9,6 @@
* Type 3b: Adds printer option
*
* TODO:
- * - support for solenoids 17-22 (m_io_outputs 16-21)
* - printer option (type 3b)
*/
@@ -106,12 +105,6 @@ WRITE_LINE_MEMBER(decocpu_type1_device::cpu_pia_irq)
}
}
-WRITE_LINE_MEMBER( decocpu_type1_device::pia21_ca2_w )
-{
-// sound ns
- m_ca2 = state;
-}
-
void decocpu_type1_device::lamp0_w(uint8_t data)
{
m_cpu->set_input_line(M6808_IRQ_LINE, CLEAR_LINE);
@@ -212,13 +205,15 @@ void decocpu_type1_device::device_add_mconfig(machine_config &config)
/* Devices */
PIA6821(config, m_pia21, 0); // 5F - PIA at 0x2100
m_pia21->writepb_handler().set(FUNC(decocpu_type1_device::solenoid1_w));
- m_pia21->ca2_handler().set(FUNC(decocpu_type1_device::pia21_ca2_w));
+ m_pia21->cb2_handler().set(FUNC(decocpu_type1_device::pia21_cb2_w));
m_pia21->irqa_handler().set(FUNC(decocpu_type1_device::cpu_pia_irq));
m_pia21->irqb_handler().set(FUNC(decocpu_type1_device::cpu_pia_irq));
PIA6821(config, m_pia24, 0); // 11D - PIA at 0x2400
m_pia24->writepa_handler().set(FUNC(decocpu_type1_device::lamp0_w));
m_pia24->writepb_handler().set(FUNC(decocpu_type1_device::lamp1_w));
+ m_pia24->ca2_handler().set(FUNC(decocpu_type1_device::pia24_ca2_w));
+ m_pia24->cb2_handler().set(FUNC(decocpu_type1_device::pia24_cb2_w));
m_pia24->irqa_handler().set(FUNC(decocpu_type1_device::cpu_pia_irq));
m_pia24->irqb_handler().set(FUNC(decocpu_type1_device::cpu_pia_irq));
@@ -233,12 +228,16 @@ void decocpu_type1_device::device_add_mconfig(machine_config &config)
m_pia2c->readpb_handler().set(FUNC(decocpu_type1_device::display_in3_r));
m_pia2c->writepa_handler().set(FUNC(decocpu_type1_device::display_out2_w));
m_pia2c->writepb_handler().set(FUNC(decocpu_type1_device::display_out3_w));
+ m_pia2c->ca2_handler().set(FUNC(decocpu_type1_device::pia2c_ca2_w));
+ m_pia2c->cb2_handler().set(FUNC(decocpu_type1_device::pia2c_cb2_w));
m_pia2c->irqa_handler().set(FUNC(decocpu_type1_device::cpu_pia_irq));
m_pia2c->irqb_handler().set(FUNC(decocpu_type1_device::cpu_pia_irq));
PIA6821(config, m_pia30, 0); // 8H - PIA at 0x3000
m_pia30->readpa_handler().set(FUNC(decocpu_type1_device::switch_r));
m_pia30->writepb_handler().set(FUNC(decocpu_type1_device::switch_w));
+ m_pia30->ca2_handler().set(FUNC(decocpu_type1_device::pia30_ca2_w));
+ m_pia30->cb2_handler().set(FUNC(decocpu_type1_device::pia30_cb2_w));
m_pia30->irqa_handler().set(FUNC(decocpu_type1_device::cpu_pia_irq));
m_pia30->irqb_handler().set(FUNC(decocpu_type1_device::cpu_pia_irq));
@@ -246,6 +245,7 @@ void decocpu_type1_device::device_add_mconfig(machine_config &config)
m_pia34->readpa_handler().set(FUNC(decocpu_type1_device::dmdstatus_r));
m_pia34->writepa_handler().set(FUNC(decocpu_type1_device::display_out4_w));
m_pia34->writepb_handler().set(FUNC(decocpu_type1_device::sound_w));
+ m_pia34->cb2_handler().set_nop();
m_pia34->irqa_handler().set(FUNC(decocpu_type1_device::cpu_pia_irq));
m_pia34->irqb_handler().set(FUNC(decocpu_type1_device::cpu_pia_irq));
@@ -301,6 +301,7 @@ void decocpu_type1_device::device_start()
m_cpu->space(AS_PROGRAM).install_rom(0x4000,0xffff,&m_rom[0x4000]);
m_io_outputs.resolve();
+ save_item(NAME(m_lamp_data));
}
decocpu_type2_device::decocpu_type2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
diff --git a/src/mame/machine/decopincpu.h b/src/mame/machine/decopincpu.h
index ade722721d8..754919195a2 100644
--- a/src/mame/machine/decopincpu.h
+++ b/src/mame/machine/decopincpu.h
@@ -77,7 +77,6 @@ protected:
private:
emu_timer* m_irq_timer = 0;
bool m_irq_active = 0;
- bool m_ca2 = 0;
u8 m_lamp_data = 0U;
// callbacks
@@ -92,7 +91,13 @@ private:
output_finder<86> m_io_outputs; // 22 solenoids + 64 lamps
DECLARE_WRITE_LINE_MEMBER(cpu_pia_irq);
- DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w);
+ DECLARE_WRITE_LINE_MEMBER(pia21_cb2_w) { } // flipper enable
+ DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { m_io_outputs[18] = state; }
+ DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { m_io_outputs[20] = state; }
+ DECLARE_WRITE_LINE_MEMBER(pia2c_ca2_w) { m_io_outputs[21] = state; }
+ DECLARE_WRITE_LINE_MEMBER(pia2c_cb2_w) { m_io_outputs[17] = state; }
+ DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { m_io_outputs[19] = state; }
+ DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { m_io_outputs[16] = state; }
void lamp0_w(uint8_t data);
void lamp1_w(uint8_t data);
uint8_t display_strobe_r();