summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Nigel Barnes <ngbarnes@gmail.com>2025-06-22 22:13:37 +0100
committer Nigel Barnes <ngbarnes@gmail.com>2025-06-22 22:13:37 +0100
commite7a2e1399394ea885b4b6a9e343efe68c802bc07 (patch)
treef9248ca8908f3ca73fae0e0236b6742b738995e3
parent7c0af047c6c408b60122e7f38e45137f35994f1f (diff)
psion/workabout.cpp: Added the LIF-PFS socket (with LIF converter).
-rw-r--r--src/mame/psion/workabout.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/mame/psion/workabout.cpp b/src/mame/psion/workabout.cpp
index 34aa3d68b6a..a3d63592d7f 100644
--- a/src/mame/psion/workabout.cpp
+++ b/src/mame/psion/workabout.cpp
@@ -4,24 +4,22 @@
Psion Workabout
- TODO:
- - expansion LIF ports
-
******************************************************************************/
#include "emu.h"
+
+//#include "bus/psion/exp/slot.h"
+#include "bus/psion/sibo/slot.h"
#include "machine/nvram.h"
#include "machine/psion_asic9.h"
#include "machine/psion_ssd.h"
#include "machine/ram.h"
#include "sound/spkrdev.h"
-//#include "bus/psion/exp/slot.h"
#include "emupal.h"
#include "screen.h"
#include "softlist_dev.h"
#include "speaker.h"
-#include "utf8.h"
namespace {
@@ -38,6 +36,7 @@ public:
, m_keyboard(*this, "COL%u", 0U)
, m_speaker(*this, "speaker")
, m_ssd(*this, "ssd%u", 1U)
+ , m_sibo(*this, "sibo")
//, m_exp(*this, "exp")
{ }
@@ -59,6 +58,7 @@ private:
required_ioport_array<8> m_keyboard;
required_device<speaker_sound_device> m_speaker;
required_device_array<psion_ssd_device, 2> m_ssd;
+ required_device<psion_sibo_slot_device> m_sibo;
//required_device<psion_exp_slot_device> m_exp;
void palette_init(palette_device &palette);
@@ -87,7 +87,7 @@ static INPUT_PORTS_START( workabout )
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^') PORT_CHAR('}')
- PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_NAME(UTF8_DOWN)
+ PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_NAME(u8"\u2193") // U+2193 = ↓
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC)) PORT_NAME("On/Esc") PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(workabout_state::wakeup), 0)
@@ -98,7 +98,7 @@ static INPUT_PORTS_START( workabout )
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_NAME("Enter")
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
- PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_NAME(UTF8_RIGHT)
+ PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_NAME(u8"\u2192") // U+2192 = →
PORT_BIT(0x180, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("COL2")
@@ -128,7 +128,7 @@ static INPUT_PORTS_START( workabout )
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR(0xa3) PORT_CHAR('\\')
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') PORT_CHAR(']')
- PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_NAME(UTF8_UP)
+ PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_NAME(u8"\u2191") // U+2191 = ↑
PORT_BIT(0x180, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("COL5")
@@ -157,7 +157,7 @@ static INPUT_PORTS_START( workabout )
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR(',')
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') PORT_CHAR('{')
- PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_NAME(UTF8_LEFT)
+ PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_NAME(u8"\u2190") // U+2190 = ←
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Backlight")
PORT_BIT(0x180, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
@@ -213,8 +213,8 @@ void workabout_state::workabout(machine_config &config)
//m_asic9->data_w<2>().set(m_exp[0], FUNC(psion_exp_slot_device::data_w));
//m_asic9->data_r<3>().set(m_exp[1], FUNC(psion_exp_slot_device::data_r)); // Expansion port B
//m_asic9->data_w<3>().set(m_exp[1], FUNC(psion_exp_slot_device::data_w));
- //m_asic9->data_r<4>().set(m_exp[2], FUNC(psion_exp_slot_device::data_r)); // Expansion port C
- //m_asic9->data_w<4>().set(m_exp[2], FUNC(psion_exp_slot_device::data_w));
+ m_asic9->data_r<4>().set(m_sibo, FUNC(psion_sibo_slot_device::data_r)); // Expansion port C
+ m_asic9->data_w<4>().set(m_sibo, FUNC(psion_sibo_slot_device::data_w));
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
screen.set_size(240, 100);
@@ -235,6 +235,10 @@ void workabout_state::workabout(machine_config &config)
PSION_SSD(config, m_ssd[1]);
m_ssd[1]->door_cb().set(m_asic9, FUNC(psion_asic9_device::medchng_w));
+ // LIF-PFS socket (with LIF converter)
+ PSION_SIBO_SLOT(config, m_sibo, psion_sibo_devices, nullptr);
+ m_sibo->int_cb().set(m_asic9, FUNC(psion_asic9_device::sds_int_w));
+
//PSION_EXP_SLOT(config, m_exp, psion_exp_devices, nullptr);
SOFTWARE_LIST(config, "ssd_list").set_original("psion_ssd").set_filter("WA");
@@ -267,8 +271,8 @@ void workabout_state::psionwamx(machine_config &config)
//m_asic9->data_w<2>().set(m_exp[0], FUNC(psion_exp_slot_device::data_w));
//m_asic9->data_r<3>().set(m_exp[1], FUNC(psion_exp_slot_device::data_r)); // Expansion port B
//m_asic9->data_w<3>().set(m_exp[1], FUNC(psion_exp_slot_device::data_w));
- //m_asic9->data_r<4>().set(m_exp[2], FUNC(psion_exp_slot_device::data_r)); // Expansion port C
- //m_asic9->data_w<4>().set(m_exp[2], FUNC(psion_exp_slot_device::data_w));
+ m_asic9->data_r<4>().set(m_sibo, FUNC(psion_sibo_slot_device::data_r)); // Expansion port C
+ m_asic9->data_w<4>().set(m_sibo, FUNC(psion_sibo_slot_device::data_w));
m_ram->set_default_size("2M");
}