From 39d304961cd2a9f38e8f85b1f0b6fa5e1a26e22f Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 25 May 2021 16:45:22 +0200 Subject: [PATCH] saitek_osa: preliminary hook up PW pin --- src/devices/bus/saitek_osa/expansion.cpp | 10 ++++++++++ src/devices/bus/saitek_osa/expansion.h | 4 ++++ src/devices/bus/saitek_osa/maestro.cpp | 2 +- src/mame/drivers/saitek_leonardo.cpp | 7 ++++--- src/mame/drivers/saitek_renaissance.cpp | 3 +++ 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/devices/bus/saitek_osa/expansion.cpp b/src/devices/bus/saitek_osa/expansion.cpp index d43f0eaf46d..bae1dfe0eb5 100644 --- a/src/devices/bus/saitek_osa/expansion.cpp +++ b/src/devices/bus/saitek_osa/expansion.cpp @@ -116,6 +116,16 @@ void saitekosa_expansion_device::ack_w(int state) m_ack = state; } +void saitekosa_expansion_device::pw_w(int state) +{ + state = (state) ? 1 : 0; + + if (m_module) + m_module->pw_w(state); + + m_pw = state; +} + u32 saitekosa_expansion_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { return (m_module) ? m_module->screen_update(screen, bitmap, cliprect) : UPDATE_HAS_NOT_CHANGED; diff --git a/src/devices/bus/saitek_osa/expansion.h b/src/devices/bus/saitek_osa/expansion.h index 35449118b84..2c245ada301 100644 --- a/src/devices/bus/saitek_osa/expansion.h +++ b/src/devices/bus/saitek_osa/expansion.h @@ -68,12 +68,14 @@ public: u8 data_state() { return m_data; } int nmi_state() { return m_nmi; } int ack_state() { return m_ack; } + int pw_state() { return m_pw; } // called from host u8 data_r(); void data_w(u8 data); void nmi_w(int state); void ack_w(int state); + void pw_w(int state); protected: // device-level overrides @@ -90,6 +92,7 @@ private: u8 m_data = 0; int m_nmi = 0; int m_ack = 0; + int m_pw = 0; device_saitekosa_expansion_interface *m_module; }; @@ -106,6 +109,7 @@ public: virtual void data_w(u8 data) { } virtual void nmi_w(int state) { } virtual void ack_w(int state) { } + virtual void pw_w(int state) { } virtual u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { return UPDATE_HAS_NOT_CHANGED; } diff --git a/src/devices/bus/saitek_osa/maestro.cpp b/src/devices/bus/saitek_osa/maestro.cpp index 2f9f23268f7..62970087434 100644 --- a/src/devices/bus/saitek_osa/maestro.cpp +++ b/src/devices/bus/saitek_osa/maestro.cpp @@ -339,7 +339,7 @@ u32 saitekosa_analyst_device::screen_update(screen_device &screen, bitmap_rgb32 const u8 *src = render + 16 * ((i & 7) + BIT(i, 3) * 40); for (int y = 0; y < 8; y++) for (int x = 0; x < 5; x++) - bitmap.pix(y + 4, i * 6 + x + 2) = BIT(src[y], 4 - x) ? 0x282828 : 0xe8e8e8; + bitmap.pix(y + 4, i * 6 + x + 2) = (BIT(src[y], 4 - x) && m_expansion->pw_state()) ? 0x282828 : 0xe8e8e8; } return 0; diff --git a/src/mame/drivers/saitek_leonardo.cpp b/src/mame/drivers/saitek_leonardo.cpp index be5aabc1072..915e03d61a9 100644 --- a/src/mame/drivers/saitek_leonardo.cpp +++ b/src/mame/drivers/saitek_leonardo.cpp @@ -43,9 +43,9 @@ Expansion modules released: TODO: - OSA module comms is not completely understood -- OSA PC link (probably uses MCU serial interface) -- add power-off +- OSA PC link, uses MCU serial interface - add nvram (MCU port $14?) +- add power-off, not useful with missing nvram support ******************************************************************************/ @@ -225,7 +225,8 @@ void leo_state::p5_w(u8 data) m_led_data[0] = (m_led_data[0] & 3) | (~data >> 4 & 0xc); update_display(); - // d0: power-off + // d0: power-off on falling edge + m_expansion->pw_w(data & 1); } u8 leo_state::p6_r() diff --git a/src/mame/drivers/saitek_renaissance.cpp b/src/mame/drivers/saitek_renaissance.cpp index f217d86161d..8838ffc46ff 100644 --- a/src/mame/drivers/saitek_renaissance.cpp +++ b/src/mame/drivers/saitek_renaissance.cpp @@ -245,6 +245,9 @@ void ren_state::p5_w(u8 data) // d5: expansion ACK-P m_expansion->ack_w(BIT(data, 5)); + // d0: power-off on falling edge + m_expansion->pw_w(data & 1); + // other: ? }