summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/saitek_osa
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2021-05-25 16:45:22 +0200
committer hap <happppp@users.noreply.github.com>2021-05-25 16:45:38 +0200
commit39d304961cd2a9f38e8f85b1f0b6fa5e1a26e22f (patch)
treed9177598ba2b94a9208db03811cdf50a1f94fc0a /src/devices/bus/saitek_osa
parent6d499cc0074a7ba82206a1d9c5e08f895bafd2f3 (diff)
saitek_osa: preliminary hook up PW pin
Diffstat (limited to 'src/devices/bus/saitek_osa')
-rw-r--r--src/devices/bus/saitek_osa/expansion.cpp10
-rw-r--r--src/devices/bus/saitek_osa/expansion.h4
-rw-r--r--src/devices/bus/saitek_osa/maestro.cpp2
3 files changed, 15 insertions, 1 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;