diff --git a/.gitattributes b/.gitattributes index f0bc659f1d3..f1b04b62e5a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7976,7 +7976,6 @@ src/mess/drivers/a310.c svneol=native#text/plain src/mess/drivers/a5105.c svneol=native#text/plain src/mess/drivers/a51xx.c svneol=native#text/plain src/mess/drivers/a6809.c svneol=native#text/plain -src/mess/drivers/a7000.c svneol=native#text/plain src/mess/drivers/a7150.c svneol=native#text/plain src/mess/drivers/a7800.c svneol=native#text/plain src/mess/drivers/abc1600.c svneol=native#text/plain @@ -8398,6 +8397,7 @@ src/mess/drivers/ravens.c svneol=native#text/plain src/mess/drivers/rd110.c svneol=native#text/plain src/mess/drivers/replicator.c svneol=native#text/plain src/mess/drivers/rex6000.c svneol=native#text/plain +src/mess/drivers/riscpc.c svneol=native#text/plain src/mess/drivers/rm380z.c svneol=native#text/plain src/mess/drivers/rmnimbus.c svneol=native#text/plain src/mess/drivers/rmt32.c svneol=native#text/plain diff --git a/src/mess/drivers/a7000.c b/src/mess/drivers/riscpc.c similarity index 81% rename from src/mess/drivers/a7000.c rename to src/mess/drivers/riscpc.c index 2d6f3b218f0..dff5a0bf767 100644 --- a/src/mess/drivers/a7000.c +++ b/src/mess/drivers/riscpc.c @@ -21,10 +21,10 @@ #include "cpu/arm7/arm7core.h" -class a7000_state : public driver_device +class riscpc_state : public driver_device { public: - a7000_state(const machine_config &mconfig, device_type type, const char *tag) + riscpc_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_palette(*this, "palette") @@ -157,7 +157,7 @@ static const char *const vidc20_vert_regnames[] = #define VCSR 6 #define VCER 7 -void a7000_state::vidc20_dynamic_screen_change() +void riscpc_state::vidc20_dynamic_screen_change() { /* sanity checks - first pass */ /* @@ -195,7 +195,7 @@ void a7000_state::vidc20_dynamic_screen_change() } } -WRITE32_MEMBER( a7000_state::a7000_vidc20_w ) +WRITE32_MEMBER( riscpc_state::a7000_vidc20_w ) { int r,g,b,cursor_index,horz_reg,vert_reg,reg = data >> 28; @@ -272,7 +272,7 @@ WRITE32_MEMBER( a7000_state::a7000_vidc20_w ) } } -UINT32 a7000_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +UINT32 riscpc_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { int x_size,y_size,x_start,y_start; int x,y,xi; @@ -571,7 +571,7 @@ static const char *const iomd_regnames[] = -void a7000_state::fire_iomd_timer(int timer) +void riscpc_state::fire_iomd_timer(int timer) { int timer_count = m_timer_counter[timer]; int val = timer_count / 2; // correct? @@ -582,7 +582,7 @@ void a7000_state::fire_iomd_timer(int timer) m_IOMD_timer[timer]->adjust(attotime::from_usec(val), 0, attotime::from_usec(val)); } -TIMER_CALLBACK_MEMBER(a7000_state::IOMD_timer0_callback) +TIMER_CALLBACK_MEMBER(riscpc_state::IOMD_timer0_callback) { m_IRQ_status_A|=0x20; if(m_IRQ_mask_A&0x20) @@ -591,7 +591,7 @@ TIMER_CALLBACK_MEMBER(a7000_state::IOMD_timer0_callback) } } -TIMER_CALLBACK_MEMBER(a7000_state::IOMD_timer1_callback) +TIMER_CALLBACK_MEMBER(riscpc_state::IOMD_timer1_callback) { m_IRQ_status_A|=0x40; if(m_IRQ_mask_A&0x40) @@ -600,7 +600,7 @@ TIMER_CALLBACK_MEMBER(a7000_state::IOMD_timer1_callback) } } -TIMER_CALLBACK_MEMBER(a7000_state::flyback_timer_callback) +TIMER_CALLBACK_MEMBER(riscpc_state::flyback_timer_callback) { m_IRQ_status_A|=0x08; if(m_IRQ_mask_A&0x08) @@ -611,7 +611,7 @@ TIMER_CALLBACK_MEMBER(a7000_state::flyback_timer_callback) m_flyback_timer->adjust(machine().first_screen()->time_until_pos(m_vidc20_vert_reg[VDER])); } -void a7000_state::viddma_transfer_start() +void riscpc_state::viddma_transfer_start() { address_space &mem = m_maincpu->space(AS_PROGRAM); UINT32 src = m_viddma_addr_start; @@ -630,7 +630,7 @@ void a7000_state::viddma_transfer_start() } } -READ32_MEMBER( a7000_state::a7000_iomd_r ) +READ32_MEMBER( riscpc_state::a7000_iomd_r ) { // if(offset != IOMD_KBDCR) // logerror("IOMD: %s Register (%04x) read\n",iomd_regnames[offset & (0x1ff >> 2)],offset*4); @@ -684,7 +684,7 @@ READ32_MEMBER( a7000_state::a7000_iomd_r ) return 0; } -WRITE32_MEMBER( a7000_state::a7000_iomd_w ) +WRITE32_MEMBER( riscpc_state::a7000_iomd_w ) { // logerror("IOMD: %s Register (%04x) write = %08x\n",iomd_regnames[offset & (0x1ff >> 2)],offset*4,data); @@ -749,7 +749,7 @@ WRITE32_MEMBER( a7000_state::a7000_iomd_w ) } } -static ADDRESS_MAP_START( a7000_mem, AS_PROGRAM, 32, a7000_state) +static ADDRESS_MAP_START( a7000_mem, AS_PROGRAM, 32, riscpc_state) AM_RANGE(0x00000000, 0x003fffff) AM_MIRROR(0x00800000) AM_ROM AM_REGION("user1", 0) // AM_RANGE(0x01000000, 0x01ffffff) AM_NOP //expansion ROM // AM_RANGE(0x02000000, 0x02ffffff) AM_RAM //VRAM @@ -775,16 +775,16 @@ ADDRESS_MAP_END static INPUT_PORTS_START( a7000 ) INPUT_PORTS_END -void a7000_state::machine_start() +void riscpc_state::machine_start() { - m_IOMD_timer[0] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(a7000_state::IOMD_timer0_callback),this)); - m_IOMD_timer[1] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(a7000_state::IOMD_timer1_callback),this)); - m_flyback_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(a7000_state::flyback_timer_callback),this)); + m_IOMD_timer[0] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(riscpc_state::IOMD_timer0_callback),this)); + m_IOMD_timer[1] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(riscpc_state::IOMD_timer1_callback),this)); + m_flyback_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(riscpc_state::flyback_timer_callback),this)); m_io_id = 0xd4e7; } -void a7000_state::machine_reset() +void riscpc_state::machine_reset() { m_IOMD_IO_ctrl = 0x0b | 0x34; //bit 0,1 and 3 set high on reset plus 2,4,5 always high // m_IRQ_status_A = 0x10; // set POR bit ON @@ -797,9 +797,9 @@ void a7000_state::machine_reset() m_flyback_timer->adjust( attotime::never); } -static MACHINE_CONFIG_START( a7000, a7000_state ) +static MACHINE_CONFIG_START( rpc600, riscpc_state ) /* Basic machine hardware */ - MCFG_CPU_ADD( "maincpu", ARM7, XTAL_32MHz ) + MCFG_CPU_ADD( "maincpu", ARM7, XTAL_30MHz ) // ARM610 MCFG_CPU_PROGRAM_MAP(a7000_mem) /* video hardware */ @@ -808,15 +808,93 @@ static MACHINE_CONFIG_START( a7000, a7000_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ MCFG_SCREEN_SIZE(1900, 1080) //max available size MCFG_SCREEN_VISIBLE_AREA(0, 1900-1, 0, 1080-1) - MCFG_SCREEN_UPDATE_DRIVER(a7000_state, screen_update) + MCFG_SCREEN_UPDATE_DRIVER(riscpc_state, screen_update) + MCFG_PALETTE_ADD("palette", 0x200) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( rpc700, riscpc_state ) + /* Basic machine hardware */ + MCFG_CPU_ADD( "maincpu", ARM7, XTAL_40MHz ) // ARM710 + MCFG_CPU_PROGRAM_MAP(a7000_mem) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_SIZE(1900, 1080) //max available size + MCFG_SCREEN_VISIBLE_AREA(0, 1900-1, 0, 1080-1) + MCFG_SCREEN_UPDATE_DRIVER(riscpc_state, screen_update) + MCFG_PALETTE_ADD("palette", 0x200) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( a7000, riscpc_state ) + /* Basic machine hardware */ + MCFG_CPU_ADD( "maincpu", ARM7, XTAL_32MHz ) // ARM7500 + MCFG_CPU_PROGRAM_MAP(a7000_mem) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_SIZE(1900, 1080) //max available size + MCFG_SCREEN_VISIBLE_AREA(0, 1900-1, 0, 1080-1) + MCFG_SCREEN_UPDATE_DRIVER(riscpc_state, screen_update) MCFG_PALETTE_ADD("palette", 0x200) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( a7000p, a7000 ) - MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_MODIFY("maincpu") // ARM7500FE MCFG_CPU_CLOCK(XTAL_48MHz) MACHINE_CONFIG_END +static MACHINE_CONFIG_START( sarpc, riscpc_state ) + /* Basic machine hardware */ + MCFG_CPU_ADD( "maincpu", ARM7, 202000000 ) // StrongARM + MCFG_CPU_PROGRAM_MAP(a7000_mem) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_SIZE(1900, 1080) //max available size + MCFG_SCREEN_VISIBLE_AREA(0, 1900-1, 0, 1080-1) + MCFG_SCREEN_UPDATE_DRIVER(riscpc_state, screen_update) + MCFG_PALETTE_ADD("palette", 0x200) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( sarpc_j233, riscpc_state ) + /* Basic machine hardware */ + MCFG_CPU_ADD( "maincpu", ARM7, 233000000 ) // StrongARM + MCFG_CPU_PROGRAM_MAP(a7000_mem) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_SIZE(1900, 1080) //max available size + MCFG_SCREEN_VISIBLE_AREA(0, 1900-1, 0, 1080-1) + MCFG_SCREEN_UPDATE_DRIVER(riscpc_state, screen_update) + MCFG_PALETTE_ADD("palette", 0x200) +MACHINE_CONFIG_END + +ROM_START(rpc600) + ROM_REGION( 0x800000, "user1", ROMREGION_ERASEFF ) + // Version 3.50 + ROM_SYSTEM_BIOS( 0, "350", "RiscOS 3.50" ) + ROMX_LOAD( "0277,521-01.bin", 0x000000, 0x100000, CRC(8ba4444e) SHA1(1b31d7a6e924bef0e0056c3a00a3fed95e55b175), ROM_GROUPWORD | ROM_SKIP(2) | ROM_BIOS(1)) + ROMX_LOAD( "0277,522-01.bin", 0x000002, 0x100000, CRC(2bc95c9f) SHA1(f8c6e2a1deb4fda48aac2e9fa21b9e01955331cf), ROM_GROUPWORD | ROM_SKIP(2) | ROM_BIOS(1)) + ROM_REGION( 0x800000, "vram", ROMREGION_ERASE00 ) +ROM_END + +ROM_START(rpc700) + ROM_REGION( 0x800000, "user1", ROMREGION_ERASEFF ) + // Version 3.60 + ROM_SYSTEM_BIOS( 0, "360", "RiscOS 3.60" ) + ROMX_LOAD( "1203,101-01.bin", 0x000000, 0x200000, CRC(2eeded56) SHA1(7217f942cdac55033b9a8eec4a89faa2dd63cd68), ROM_GROUPWORD | ROM_SKIP(2) | ROM_BIOS(1)) + ROMX_LOAD( "1203,102-01.bin", 0x000002, 0x200000, CRC(6db87d21) SHA1(428403ed31682041f1e3d114ea02a688d24b7d94), ROM_GROUPWORD | ROM_SKIP(2) | ROM_BIOS(1)) + ROM_REGION( 0x800000, "vram", ROMREGION_ERASE00 ) +ROM_END + ROM_START(a7000) ROM_REGION( 0x800000, "user1", ROMREGION_ERASEFF ) // Version 3.60 @@ -843,6 +921,22 @@ ROM_START(a7000p) ROM_REGION( 0x800000, "vram", ROMREGION_ERASE00 ) ROM_END +ROM_START(sarpc) + ROM_REGION( 0x800000, "user1", ROMREGION_ERASEFF ) + // Version 3.70 + ROM_SYSTEM_BIOS( 0, "370", "RiscOS 3.70" ) + ROMX_LOAD( "1203,191-01.bin", 0x000000, 0x200000, NO_DUMP, ROM_GROUPWORD | ROM_SKIP(2) | ROM_BIOS(1)) + ROMX_LOAD( "1203,192-01.bin", 0x000002, 0x200000, NO_DUMP, ROM_GROUPWORD | ROM_SKIP(2) | ROM_BIOS(1)) +ROM_END + +ROM_START(sarpc_j233) + ROM_REGION( 0x800000, "user1", ROMREGION_ERASEFF ) + // Version 3.71 + ROM_SYSTEM_BIOS( 0, "371", "RiscOS 3.71" ) + ROMX_LOAD( "1203,261-01.bin", 0x000000, 0x200000, CRC(8e3c570a) SHA1(ffccb52fa8e165d3f64545caae1c349c604386e9), ROM_GROUPWORD | ROM_SKIP(2) | ROM_BIOS(1)) + ROMX_LOAD( "1203,262-01.bin", 0x000002, 0x200000, CRC(cf4615b4) SHA1(c340f29aeda3557ebd34419fcb28559fc9b620f8), ROM_GROUPWORD | ROM_SKIP(2) | ROM_BIOS(1)) +ROM_END + /*************************************************************************** Game driver(s) @@ -850,5 +944,9 @@ ROM_END ***************************************************************************/ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1995, a7000, 0, 0, a7000, a7000, driver_device, 0, "Acorn", "Archimedes A7000", GAME_NOT_WORKING | GAME_NO_SOUND ) -COMP( 1997, a7000p, a7000, 0, a7000p, a7000, driver_device, 0, "Acorn", "Archimedes A7000+", GAME_NOT_WORKING | GAME_NO_SOUND ) +COMP( 1994, rpc600, 0, 0, rpc600, a7000, driver_device, 0, "Acorn", "Risc PC 600", GAME_NOT_WORKING | GAME_NO_SOUND ) +COMP( 1994, rpc700, rpc600, 0, rpc700, a7000, driver_device, 0, "Acorn", "Risc PC 700", GAME_NOT_WORKING | GAME_NO_SOUND ) +COMP( 1995, a7000, rpc600, 0, a7000, a7000, driver_device, 0, "Acorn", "Archimedes A7000", GAME_NOT_WORKING | GAME_NO_SOUND ) +COMP( 1997, a7000p, rpc600, 0, a7000p, a7000, driver_device, 0, "Acorn", "Archimedes A7000+", GAME_NOT_WORKING | GAME_NO_SOUND ) +COMP( 1997, sarpc, rpc600, 0, sarpc, a7000, driver_device, 0, "Acorn", "StrongARM Risc PC", GAME_NOT_WORKING | GAME_NO_SOUND ) +COMP( 1997, sarpc_j233, rpc600, 0, sarpc_j233, a7000, driver_device, 0, "Acorn", "J233 StrongARM Risc PC", GAME_NOT_WORKING | GAME_NO_SOUND ) diff --git a/src/mess/mess.lst b/src/mess/mess.lst index 5ed33483fc6..e7f03faadc5 100644 --- a/src/mess/mess.lst +++ b/src/mess/mess.lst @@ -386,6 +386,10 @@ a3020 // 1988 Acorn Archimedes 3020 a7000 // 1995 Acorn Archimedes 7000 a7000p // 1997 Acorn Archimedes 7000+ a6809 +rpc600 +rpc700 +sarpc +sarpc_j233 // ACT apricot // 1983 ACT diff --git a/src/mess/mess.mak b/src/mess/mess.mak index fd7f4b38081..20d9f782168 100644 --- a/src/mess/mess.mak +++ b/src/mess/mess.mak @@ -910,7 +910,6 @@ $(MESSOBJ)/shared.a: \ $(MESSOBJ)/acorn.a: \ $(MESS_DRIVERS)/a310.o \ $(MESS_DRIVERS)/a6809.o \ - $(MESS_DRIVERS)/a7000.o \ $(MESS_DRIVERS)/acrnsys1.o \ $(MESS_DRIVERS)/atom.o \ $(MESS_VIDEO)/bbc.o \ @@ -920,6 +919,7 @@ $(MESSOBJ)/acorn.a: \ $(MESS_VIDEO)/electron.o \ $(MESS_MACHINE)/electron.o \ $(MESS_DRIVERS)/electron.o \ + $(MESS_DRIVERS)/riscpc.o \ $(MESS_DRIVERS)/z88.o \ $(MESS_VIDEO)/z88.o \ $(MESS_MACHINE)/upd65031.o \