-arm7: Added ARM710T variant subclass. [Ryan Holtz]

-psion5: Added skeleton driver for the Psion 5mx. [Ninji, Ryan Holtz]
This commit is contained in:
mooglyguy 2020-01-02 02:27:04 +01:00
parent 35438741be
commit 2f5329f522
6 changed files with 119 additions and 0 deletions

View File

@ -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",
}

View File

@ -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)
{

View File

@ -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)

View File

@ -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 )

View File

@ -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)

View File

@ -688,6 +688,7 @@ proteus3.cpp
ps2.cpp
ps2sony.cpp
psion.cpp
psion5.cpp
psx.cpp
pt68k4.cpp
ptcsol.cpp