summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2020-01-02 02:27:04 +0100
committer mooglyguy <therealmogminer@gmail.com>2020-01-02 02:27:04 +0100
commit2f5329f5229c6e7467f22988a6ed500a724d27e5 (patch)
tree060973226a1624f43a1eeecd8d455e0149da8ca6
parent35438741bedf8cc53a2a70bba89b6a23818257ca (diff)
-arm7: Added ARM710T variant subclass. [Ryan Holtz]
-psion5: Added skeleton driver for the Psion 5mx. [Ninji, Ryan Holtz]
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/devices/cpu/arm7/arm7.cpp11
-rw-r--r--src/devices/cpu/arm7/arm7.h8
-rw-r--r--src/mame/drivers/psion5.cpp95
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/mess.flt1
6 files changed, 119 insertions, 0 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 3d6b57cea6d..5f98c599668 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -3086,6 +3086,7 @@ createMESSProjects(_target, _subtarget, "psion")
files {
MAME_DIR .. "src/mame/drivers/psion.cpp",
MAME_DIR .. "src/mame/includes/psion.h",
+ MAME_DIR .. "src/mame/drivers/psion5.cpp",
MAME_DIR .. "src/mame/machine/psion_pack.cpp",
MAME_DIR .. "src/mame/machine/psion_pack.h",
}
diff --git a/src/devices/cpu/arm7/arm7.cpp b/src/devices/cpu/arm7/arm7.cpp
index 4cf3b5fe351..af0bbe87c78 100644
--- a/src/devices/cpu/arm7/arm7.cpp
+++ b/src/devices/cpu/arm7/arm7.cpp
@@ -48,6 +48,7 @@ void (*arm7_coproc_dt_w_callback)(arm_state *arm, uint32_t insn, uint32_t *prn,
DEFINE_DEVICE_TYPE(ARM7, arm7_cpu_device, "arm7_le", "ARM7 (little)")
DEFINE_DEVICE_TYPE(ARM7_BE, arm7_be_cpu_device, "arm7_be", "ARM7 (big)")
DEFINE_DEVICE_TYPE(ARM710A, arm710a_cpu_device, "arm710a", "ARM710a")
+DEFINE_DEVICE_TYPE(ARM710T, arm710t_cpu_device, "arm710t", "ARM710T")
DEFINE_DEVICE_TYPE(ARM7500, arm7500_cpu_device, "arm7500", "ARM7500")
DEFINE_DEVICE_TYPE(ARM9, arm9_cpu_device, "arm9", "ARM9")
DEFINE_DEVICE_TYPE(ARM920T, arm920t_cpu_device, "arm920t", "ARM920T")
@@ -106,6 +107,16 @@ arm710a_cpu_device::arm710a_cpu_device(const machine_config &mconfig, const char
}
+arm710t_cpu_device::arm710t_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : arm7_cpu_device(mconfig, ARM710T, tag, owner, clock, 4, ARCHFLAG_MODE26, ENDIANNESS_LITTLE)
+{
+ m_copro_id = ARM9_COPRO_ID_MFR_ARM
+ | ARM9_COPRO_ID_ARCH_V4
+ | ARM9_COPRO_ID_PART_ARM710
+ | 0x00800000;
+}
+
+
arm7500_cpu_device::arm7500_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: arm7_cpu_device(mconfig, ARM7500, tag, owner, clock, 4, ARCHFLAG_MODE26, ENDIANNESS_LITTLE)
{
diff --git a/src/devices/cpu/arm7/arm7.h b/src/devices/cpu/arm7/arm7.h
index fa88ff1cd4c..938950cc9d8 100644
--- a/src/devices/cpu/arm7/arm7.h
+++ b/src/devices/cpu/arm7/arm7.h
@@ -602,6 +602,13 @@ public:
arm710a_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
};
+class arm710t_cpu_device : public arm7_cpu_device
+{
+public:
+ // construction/destruction
+ arm710t_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+};
+
class arm9_cpu_device : public arm7_cpu_device
{
public:
@@ -694,6 +701,7 @@ public:
DECLARE_DEVICE_TYPE(ARM7, arm7_cpu_device)
DECLARE_DEVICE_TYPE(ARM7_BE, arm7_be_cpu_device)
DECLARE_DEVICE_TYPE(ARM710A, arm710a_cpu_device)
+DECLARE_DEVICE_TYPE(ARM710T, arm710t_cpu_device)
DECLARE_DEVICE_TYPE(ARM7500, arm7500_cpu_device)
DECLARE_DEVICE_TYPE(ARM9, arm9_cpu_device)
DECLARE_DEVICE_TYPE(ARM920T, arm920t_cpu_device)
diff --git a/src/mame/drivers/psion5.cpp b/src/mame/drivers/psion5.cpp
new file mode 100644
index 00000000000..1addef2930e
--- /dev/null
+++ b/src/mame/drivers/psion5.cpp
@@ -0,0 +1,95 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz, Ash Wolf
+/***************************************************************************
+
+ Psion 5mx (EPOC R5) series
+
+ Skeleton driver by Ryan Holtz, ported from work by Ash Wolf
+
+ TODO:
+ - everything
+
+ More info:
+ https://github.com/Treeki/WindEmu
+
+****************************************************************************/
+
+
+#include "emu.h"
+#include "cpu/arm7/arm7.h"
+
+#include "screen.h"
+
+class psion5_state : public driver_device
+{
+public:
+ psion5_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ {
+ }
+
+ void psion5mx(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+private:
+ void main_map(address_map &map);
+
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ required_device<arm710t_cpu_device> m_maincpu;
+};
+
+void psion5_state::machine_start()
+{
+}
+
+void psion5_state::machine_reset()
+{
+}
+
+void psion5_state::main_map(address_map &map)
+{
+ map(0x00000000, 0x009fffff).rom().region("maincpu", 0);
+ map(0xc0000000, 0xc03fffff).ram().mirror(0x1fc00000);
+}
+
+uint32_t psion5_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+/* Input ports */
+INPUT_PORTS_START( psion5 )
+INPUT_PORTS_END
+
+/* basic configuration for 2 lines display */
+void psion5_state::psion5mx(machine_config &config)
+{
+ /* basic machine hardware */
+ ARM710T(config, m_maincpu, 18000000); // 18MHz, per wikipedia
+ m_maincpu->set_addrmap(AS_PROGRAM, &psion5_state::main_map);
+
+ /* video hardware */
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); /* not accurate */
+ screen.set_screen_update(FUNC(psion5_state::screen_update));
+ screen.set_size(640, 240);
+ screen.set_visarea(0, 640-1, 0, 240-1);
+}
+
+/* ROM definition */
+
+ROM_START( psion5mx )
+ ROM_REGION( 0xa00000, "maincpu", 0 )
+ ROM_LOAD( "5mx.rom", 0x000000, 0xa00000, CRC(a1e2d038) SHA1(4c082321264e1ae7fe77699e59b8960460690fa6) )
+ROM_END
+
+/* Driver */
+
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+COMP( 1999, psion5mx, 0, 0, psion5mx, psion5, psion5_state, empty_init, "Psion", "5mx", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 3596c69d2aa..296244967b8 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -33824,6 +33824,9 @@ psionp350 //
psionp464 //
psionxp //
+@source:psion5.cpp
+psion5mx //
+
@source:psx.cpp
psa // 1995 Sony PlayStation (Asia-Pacific)
pse // 1995 Sony PlayStation (Europe)
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index 46a437a9368..558951d43b1 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -688,6 +688,7 @@ proteus3.cpp
ps2.cpp
ps2sony.cpp
psion.cpp
+psion5.cpp
psx.cpp
pt68k4.cpp
ptcsol.cpp